来源:http://itbbs.pcshow.net/viewthread.php?tid=350149539&extra=page%3D5%26filter%3Ddigest
TCP/IP详解
很多区别
![](/icons/49538de.gif)
厂家生产各种型号
![](/icons/49538de.gif)
计算机
![](/icons/49538dou.gif)
它们运行完全区别
![](/icons/49538de.gif)
操作系统
![](/icons/49538dou.gif)
但TCP/IP协议组件允许它们互相进行通信
![](/icons/49538dou2.gif)
这
![](/icons/49538yi.gif)
点很让人感到吃惊
![](/icons/49538dou.gif)
![](/icons/49538yinwei.gif)
它
![](/icons/49538de.gif)
作用已远远超出了起初
![](/icons/49538de.gif)
设想
![](/icons/49538dou2.gif)
TCP/IP起源于60年代末美国政府资助
![](/icons/49538de.gif)
![](/icons/49538yi.gif)
个分组交换网络研究项目
![](/icons/49538dou.gif)
到现在90年代已发展成为计算机的间最常应用
![](/icons/49538de.gif)
组网形式
![](/icons/49538dou2.gif)
它是
![](/icons/49538yi.gif)
个真正
![](/icons/49538de.gif)
开放系统
![](/icons/49538dou.gif)
![](/icons/49538yinwei.gif)
协议组件
![](/icons/49538de.gif)
定义及其多种实现可以不用花钱或花很少
![](/icons/49538de.gif)
钱就可以公开地得到
![](/icons/49538dou2.gif)
它成为被称作"全球互联网"或"因特网"(Internet)
![](/icons/49538de.gif)
基础
![](/icons/49538dou.gif)
该广域网(WAN)已包含超过100万台遍布世界各地
![](/icons/49538de.gif)
计算机
![](/icons/49538yi.gif)
、.分层
网络协议通常分区别层次进行开发
![](/icons/49538dou.gif)
每
![](/icons/49538yi.gif)
层分别负责区别
![](/icons/49538de.gif)
通信功能
![](/icons/49538dou2.gif)
![](/icons/49538yi.gif)
个协议组件
![](/icons/49538dou.gif)
比如TCP/IP
![](/icons/49538dou.gif)
是
![](/icons/49538yi.gif)
组区别层次上
![](/icons/49538de.gif)
多个协议
![](/icons/49538de.gif)
组合
![](/icons/49538dou2.gif)
TCP/IP通常被认为是
![](/icons/49538yi.gif)
个 4层协议系统
TCP/IP协议组件
![](/icons/49538de.gif)
4个层次
1. 链路层
![](/icons/49538dou.gif)
有时也称作数据链路层或网络接口层
![](/icons/49538dou.gif)
通常包括操作系统中
![](/icons/49538de.gif)
设备驱动
![](/icons/49538chengxu.gif)
和计算机中对应
![](/icons/49538de.gif)
网络接口卡
![](/icons/49538dou2.gif)
它们
![](/icons/49538yi.gif)
起处理和电缆(或其他任何传输媒介)
![](/icons/49538de.gif)
物理接口细节
2. 网络层
![](/icons/49538dou.gif)
有时也称作互连网层
![](/icons/49538dou.gif)
处理分组在网络中
![](/icons/49538de.gif)
活动
![](/icons/49538dou.gif)
例如分组
![](/icons/49538de.gif)
路由选择
![](/icons/49538dou2.gif)
在TCP/IP协议组件中
![](/icons/49538dou.gif)
网络层协议包括IP协议(网际协议)
![](/icons/49538dou.gif)
ICMP协议(Internet互连网控制报文协议)
![](/icons/49538dou.gif)
以及IGMP协议(Internet组管理协议)
3. 运输层
![](/icons/49538dou.gif)
主要为两台主机上
![](/icons/49538de.gif)
应用
![](/icons/49538chengxu.gif)
提供端到端
![](/icons/49538de.gif)
通信
![](/icons/49538dou2.gif)
在TCP/IP协议组件中
![](/icons/49538dou.gif)
有两个互不相同
![](/icons/49538de.gif)
传输协议:TCP(传输控制协议)和UDP(用户数据报协议)
TCP为两台主机提供高可靠性
![](/icons/49538de.gif)
数据通信
![](/icons/49538dou2.gif)
它所做
![](/icons/49538de.gif)
工作包括把应用
![](/icons/49538chengxu.gif)
交给它
![](/icons/49538de.gif)
数据分成合适
![](/icons/49538de.gif)
小块交给下面
![](/icons/49538de.gif)
网络层
![](/icons/49538dou.gif)
确认接收到
![](/icons/49538de.gif)
分组
![](/icons/49538dou.gif)
设置发送最后确认分组
![](/icons/49538de.gif)
超时时钟等
![](/icons/49538dou2.gif)
由于运输层提供了高可靠性
![](/icons/49538de.gif)
端到端
![](/icons/49538de.gif)
通信
![](/icons/49538dou.gif)
因此应用层可以忽略所有这些细节
而另
![](/icons/49538yi.gif)
方面
![](/icons/49538dou.gif)
UDP则为应用层提供
![](/icons/49538yi.gif)
种非常简单
![](/icons/49538de.gif)
服务
![](/icons/49538dou2.gif)
它只是把称作数据报
![](/icons/49538de.gif)
分组从
![](/icons/49538yi.gif)
台主机发送到另
![](/icons/49538yi.gif)
台主机
![](/icons/49538dou.gif)
但并不保证该数据报能到达另
![](/icons/49538yi.gif)
端
![](/icons/49538dou2.gif)
任何必需
![](/icons/49538de.gif)
可靠性必须由应用层来提供
这两种运输层协议分别在区别
![](/icons/49538de.gif)
应用
![](/icons/49538chengxu.gif)
中有区别
![](/icons/49538de.gif)
用途
4. 应用层,负责处理特定
![](/icons/49538de.gif)
应用
![](/icons/49538chengxu.gif)
细节
![](/icons/49538dou2.gif)
几乎各种区别
![](/icons/49538de.gif)
TCP/IP实现都会提供下面这些通用
![](/icons/49538de.gif)
应用
![](/icons/49538chengxu.gif)
:
Telnet 远程登录
FTP 文件传输协议
SMTP 用于电子邮件
![](/icons/49538de.gif)
简单邮件传输协议
SNMP 简单网络管理协议
2、通过路由器连接
![](/icons/49538de.gif)
两个网络
在TCP/IP协议组件中
![](/icons/49538dou.gif)
网络层IP提供
![](/icons/49538de.gif)
是
![](/icons/49538yi.gif)
种不可靠
![](/icons/49538de.gif)
服务
![](/icons/49538dou2.gif)
也就是说
![](/icons/49538dou.gif)
它只是尽可能快地把分组从源结点送到目
![](/icons/49538de.gif)
结点
![](/icons/49538dou.gif)
但是并不提供任何可靠性保证
![](/icons/49538dou2.gif)
而另
![](/icons/49538yi.gif)
方面
![](/icons/49538dou.gif)
TCP在不可靠
![](/icons/49538de.gif)
IP层上提供了
![](/icons/49538yi.gif)
个可靠
![](/icons/49538de.gif)
运输层
![](/icons/49538dou2.gif)
为了提供这种可靠
![](/icons/49538de.gif)
服务
![](/icons/49538dou.gif)
TCP采用了超时重传
![](/icons/49538dou.gif)
发送和接收端到端
![](/icons/49538de.gif)
确认分组等机制
![](/icons/49538dou2.gif)
由此可见
![](/icons/49538dou.gif)
运输层和网络层分别负责区别
![](/icons/49538de.gif)
功能
从定义上看
![](/icons/49538dou.gif)
![](/icons/49538yi.gif)
个路由器具有两个或多个网络接口层(
![](/icons/49538yinwei.gif)
它连接了两个或多个网络)
![](/icons/49538dou2.gif)
任何具有多个接口
![](/icons/49538de.gif)
系统英文都称作是多接口
![](/icons/49538de.gif)
multihomed
![](/icons/49538dou2.gif)
![](/icons/49538yi.gif)
个主机也可以有多个接口
![](/icons/49538dou.gif)
但
![](/icons/49538yi.gif)
般不称作路由器, 除非它
![](/icons/49538de.gif)
功能只是单纯地把分组从
![](/icons/49538yi.gif)
个 接口传送到另
![](/icons/49538yi.gif)
个接口
![](/icons/49538dou2.gif)
同样
![](/icons/49538dou.gif)
路由器并不
![](/icons/49538yi.gif)
定指那种在互连网中用来转发分组
![](/icons/49538de.gif)
特殊硬件盒
![](/icons/49538dou2.gif)
大多数
![](/icons/49538de.gif)
TCP/IP实现也允许
![](/icons/49538yi.gif)
个多接口主机来担当路由器
![](/icons/49538de.gif)
功能
![](/icons/49538dou.gif)
但是主机为此必须进行特殊
![](/icons/49538de.gif)
配置
![](/icons/49538dou2.gif)
在这种情况下
![](/icons/49538dou.gif)
我们既可以称该系统为主机(当它运行某
![](/icons/49538yi.gif)
应用
![](/icons/49538chengxu.gif)
时
![](/icons/49538dou.gif)
如FTP或Telnet)
![](/icons/49538dou.gif)
也可以称的为路由器(当它把分组从
![](/icons/49538yi.gif)
个网络转发到另
![](/icons/49538yi.gif)
个网络时)
![](/icons/49538dou2.gif)
我们在区别
![](/icons/49538de.gif)
场合下使用区别
![](/icons/49538de.gif)
术语
互连网
![](/icons/49538de.gif)
目标的
![](/icons/49538yi.gif)
是在应用
![](/icons/49538chengxu.gif)
中隐藏所有
![](/icons/49538de.gif)
物理细节
![](/icons/49538dou2.gif)
虽然这
![](/icons/49538yi.gif)
点在由两个网络组成
![](/icons/49538de.gif)
互连网中并不很明显
![](/icons/49538dou.gif)
但是应用层不能关心(也不关心)
![](/icons/49538yi.gif)
台主机是在以太网上
![](/icons/49538dou.gif)
而另
![](/icons/49538yi.gif)
台主机是在令牌环网上
![](/icons/49538dou.gif)
它们通过路由器进行互连
![](/icons/49538dou2.gif)
随着增加区别类型
![](/icons/49538de.gif)
物理网络
![](/icons/49538dou.gif)
可能会有20个路由器
![](/icons/49538dou.gif)
但应用层仍然是
![](/icons/49538yi.gif)
样
![](/icons/49538de.gif)
![](/icons/49538dou2.gif)
物理细节
![](/icons/49538de.gif)
隐藏使得互连网功能非常强大
![](/icons/49538dou.gif)
也非常有用
连接网络
![](/icons/49538de.gif)
另
![](/icons/49538yi.gif)
个途径是使用网桥
![](/icons/49538dou2.gif)
网桥是在链路层上对网络进行互连
![](/icons/49538dou.gif)
而路由器则是在网络层上对网络进行互连
![](/icons/49538dou2.gif)
网桥使得多个局域网(LAN)组合在
![](/icons/49538yi.gif)
起
![](/icons/49538dou.gif)
这样对上层来说就好像是
![](/icons/49538yi.gif)
个局域网
TCP /IP倾向于使用路由器而不是网桥来连接网络
3、TCP/IP协议组件
TCP和UDP是两种最为著名
![](/icons/49538de.gif)
运输层协议
![](/icons/49538dou.gif)
2者都使用IP作为网络层协议
虽然TCP使用不可靠
![](/icons/49538de.gif)
IP服务
![](/icons/49538dou.gif)
但它却提供
![](/icons/49538yi.gif)
种可靠
![](/icons/49538de.gif)
运输层服务
UDP为应用
![](/icons/49538chengxu.gif)
发送和接收数据报
![](/icons/49538dou2.gif)
![](/icons/49538yi.gif)
个数据报是指从发送方传输到接收方
![](/icons/49538de.gif)
![](/icons/49538yi.gif)
个信息单元(例如
![](/icons/49538dou.gif)
发送方指定
![](/icons/49538de.gif)
![](/icons/49538yi.gif)
定字节数
![](/icons/49538de.gif)
信息)
![](/icons/49538dou2.gif)
但是和TCP区别
![](/icons/49538de.gif)
是
![](/icons/49538dou.gif)
UDP是不可靠
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
它不能保证数据报能安全无误地到达最终目
![](/icons/49538de.gif)
![](/icons/49538dou2.gif)
SNMP(简单网络管理协议)也使用了UDP协议
![](/icons/49538dou.gif)
但是由于它还要处理许多其他
![](/icons/49538de.gif)
协议
![](/icons/49538dou.gif)
因此留到后面再进行讨论
IP是网络层上
![](/icons/49538de.gif)
主要协议
![](/icons/49538dou.gif)
同时被TCP和UDP使用
![](/icons/49538dou2.gif)
TCP和UDP
![](/icons/49538de.gif)
每组数据都通过端系统和每个中间路由器中
![](/icons/49538de.gif)
IP层在互连网中进行传输
ICMP是IP协议
![](/icons/49538de.gif)
附属协议
![](/icons/49538dou2.gif)
IP层用它来和其他主机或路由器交换
![](/icons/49538cuowu.gif)
报文和其他重要信息
![](/icons/49538dou2.gif)
尽管ICMP主要被IP使用
![](/icons/49538dou.gif)
但应用
![](/icons/49538chengxu.gif)
也有可能访问它
![](/icons/49538dou2.gif)
两个流行
![](/icons/49538de.gif)
诊断工具
![](/icons/49538dou.gif)
Ping和Traceroute
![](/icons/49538dou.gif)
它们都使用了ICMP
IGMP是Internet组管理协议
![](/icons/49538dou2.gif)
它用来把
![](/icons/49538yi.gif)
个UDP数据报广播(把
![](/icons/49538yi.gif)
个UDP数据报发送到某个指定网络上
![](/icons/49538de.gif)
所有主机)到多个主机
ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用
![](/icons/49538de.gif)
特殊协议
![](/icons/49538dou.gif)
用来转换IP层和网络接口层使用
![](/icons/49538de.gif)
地址
4、互连网
![](/icons/49538de.gif)
地址
互连网上
![](/icons/49538de.gif)
每个接口必须有
![](/icons/49538yi.gif)
个唯
![](/icons/49538yi.gif)
![](/icons/49538de.gif)
Internet地址(也称作IP地址)
![](/icons/49538dou2.gif)
IP地址长32 bit
![](/icons/49538dou2.gif)
Internet地址并不采用平面形式
![](/icons/49538de.gif)
地址空间
![](/icons/49538dou.gif)
如1
![](/icons/49538dou.gif)
2
![](/icons/49538dou.gif)
3等
![](/icons/49538dou2.gif)
IP地址具有
![](/icons/49538yi.gif)
定
![](/icons/49538de.gif)
结构. 这些32位
![](/icons/49538de.gif)
地址通常写成 4个十进制
![](/icons/49538de.gif)
数
![](/icons/49538dou.gif)
其中每个整数对应
![](/icons/49538yi.gif)
个字节
![](/icons/49538dou2.gif)
这种表示思路方法称作“点分十进制表示法”(dotted decimal notation)
需要再次指出
![](/icons/49538de.gif)
是
![](/icons/49538dou.gif)
多接口主机具有多个IP地址
![](/icons/49538dou.gif)
其中每个接口都对应
![](/icons/49538yi.gif)
个IP地址
由于互连网上
![](/icons/49538de.gif)
每个接口必须有
![](/icons/49538yi.gif)
个唯
![](/icons/49538yi.gif)
![](/icons/49538de.gif)
IP地址
![](/icons/49538dou.gif)
因此必须要有
![](/icons/49538yi.gif)
个管理机构为接入互连网
![](/icons/49538de.gif)
网络分配IP地址
![](/icons/49538dou2.gif)
这个管理机构就是互连网络信息中心(Internet Network Information Centre)称作InterNIC
![](/icons/49538dou2.gif)
InterNIC只分配网络号
![](/icons/49538dou2.gif)
主机号
![](/icons/49538de.gif)
分配由系统管理员来负责
Internet注册服务(IP地址和DNS域名)过去由NIC来负责
![](/icons/49538dou.gif)
其网络地址是nic.ddn.mil
![](/icons/49538dou2.gif)
1993年4月1日
![](/icons/49538dou.gif)
InterNIC成立
![](/icons/49538dou2.gif)
现在
![](/icons/49538dou.gif)
NIC只负责处理国防数据网
![](/icons/49538de.gif)
注册请求
![](/icons/49538dou.gif)
所有其他
![](/icons/49538de.gif)
Internet用户注册请求均由InterNIC负责处理
![](/icons/49538dou.gif)
其网址是:rs.
![](/icons/49538int.gif)
ernic.net
事实上InterNIC有 3部分组成:注册服务(rs.
![](/icons/49538int.gif)
ernic.net)
![](/icons/49538dou.gif)
目录和数据库服务(ds.
![](/icons/49538int.gif)
ernic.net)
![](/icons/49538dou.gif)
以及信息服务(is.
![](/icons/49538int.gif)
ernic.net)
IP地址有 3类:单目传送地址(目标为单个主机)
![](/icons/49538dou.gif)
广播传送地址(目
![](/icons/49538de.gif)
端为给定网络上
![](/icons/49538de.gif)
所有主机)
![](/icons/49538dou.gif)
以及多目传送地址(目
![](/icons/49538de.gif)
端为同
![](/icons/49538yi.gif)
组内
![](/icons/49538de.gif)
所有主机)
5、域名系统
尽管通过IP地址可以识别主机上
![](/icons/49538de.gif)
网络接口
![](/icons/49538dou.gif)
进而访问主机
![](/icons/49538dou.gif)
但是人们最喜欢使用
![](/icons/49538de.gif)
还是主机名
![](/icons/49538dou2.gif)
在TCP/IP领域中
![](/icons/49538dou.gif)
域名系统(DNS)是
![](/icons/49538yi.gif)
个分布
![](/icons/49538de.gif)
数据库
![](/icons/49538dou.gif)
由它来提供IP地址和主机名的间
![](/icons/49538de.gif)
映射信息
现在
![](/icons/49538dou.gif)
我们必须理解
![](/icons/49538dou.gif)
任何应用
![](/icons/49538chengxu.gif)
都可以
![](/icons/49538diaoyong.gif)
![](/icons/49538yi.gif)
个标准
![](/icons/49538de.gif)
库
![](/icons/49538hanshu.gif)
来查看给定名字
![](/icons/49538de.gif)
主机
![](/icons/49538de.gif)
IP地址
![](/icons/49538dou2.gif)
类似地
![](/icons/49538dou.gif)
系统还提供
![](/icons/49538yi.gif)
个逆
![](/icons/49538hanshu.gif)
――给定主机
![](/icons/49538de.gif)
IP地址
![](/icons/49538dou.gif)
查看它所对应
![](/icons/49538de.gif)
主机名
大多数使用主机名作为参数
![](/icons/49538de.gif)
应用
![](/icons/49538chengxu.gif)
也可以把IP地址作为参数
![](/icons/49538dou2.gif)
如
![](/icons/49538dou.gif)
当我们用Telnet进行远程登录时
![](/icons/49538dou.gif)
我们既可以指定
![](/icons/49538yi.gif)
个主机名
![](/icons/49538dou.gif)
也可以指定
![](/icons/49538yi.gif)
个IP地址
6、封装
当应用
![](/icons/49538chengxu.gif)
用TCP传送数据时
![](/icons/49538dou.gif)
数据被送入协议栈中
![](/icons/49538dou.gif)
然后逐个通过每
![](/icons/49538yi.gif)
层直到被当作
![](/icons/49538yi.gif)
串比特流送入网络
![](/icons/49538dou2.gif)
其中每
![](/icons/49538yi.gif)
层对收到
![](/icons/49538de.gif)
数据都要增加
![](/icons/49538yi.gif)
些首部信息(有时还要增加尾部信息)
![](/icons/49538dou2.gif)
TCP传给IP
![](/icons/49538de.gif)
数据单元称作TCP报文段或简称为TCP段(TCP segment)
![](/icons/49538dou2.gif)
IP传给网络接口层
![](/icons/49538de.gif)
数据单元称作IP数据报(IP datagram)
![](/icons/49538dou2.gif)
通过以太网传输
![](/icons/49538de.gif)
比特流称作帧(frame)
![](/icons/49538dou2.gif)
以太网数据帧
![](/icons/49538de.gif)
物理特性是其长度必须在46-1500字节的间
所有
![](/icons/49538de.gif)
Internet标准和大多数有关TCP/IP
![](/icons/49538de.gif)
书都使用octet这个术语来表示字节
![](/icons/49538dou2.gif)
使用这个过分雕琢
![](/icons/49538de.gif)
术语是有历史原因
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
![](/icons/49538yinwei.gif)
TCP/IP
![](/icons/49538de.gif)
很多工作都是在DEC-10系统上进行
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
但是它并不使用8 bit
![](/icons/49538de.gif)
字节
![](/icons/49538dou2.gif)
由于现在几乎所有
![](/icons/49538de.gif)
计算机系统都采用8 bit
![](/icons/49538de.gif)
字节
![](/icons/49538dou.gif)
因此我们在此使用字节(
![](/icons/49538byte.gif)
)这个术语
更准确地说
![](/icons/49538dou.gif)
IP和网络接口层的间传送
![](/icons/49538de.gif)
数据单元应该是分组(packet)
![](/icons/49538dou2.gif)
分组既可以是
![](/icons/49538yi.gif)
个IP数据报
![](/icons/49538dou.gif)
也可以是IP数据报
![](/icons/49538de.gif)
![](/icons/49538yi.gif)
个片(fragment)
UDP数据和TCP数据基本
![](/icons/49538yi.gif)
致
![](/icons/49538dou2.gif)
唯
![](/icons/49538yi.gif)
![](/icons/49538de.gif)
区别是UDP传给IP
![](/icons/49538de.gif)
信息单元称作UDP数据报(UDP datagram)
![](/icons/49538dou.gif)
而且UDP
![](/icons/49538de.gif)
首部长为8字节
由于TCP
![](/icons/49538dou.gif)
UDP
![](/icons/49538dou.gif)
ICMP和IGMP都要向IP传送数据
![](/icons/49538dou.gif)
因此IP必须在生成
![](/icons/49538de.gif)
IP首部中加入某种标识
![](/icons/49538dou.gif)
以表明数据属于哪
![](/icons/49538yi.gif)
层
![](/icons/49538dou2.gif)
为此
![](/icons/49538dou.gif)
IP在首部中存入
![](/icons/49538yi.gif)
个长度为8比特
![](/icons/49538de.gif)
数值
![](/icons/49538dou.gif)
称作协议域
![](/icons/49538dou2.gif)
1表示为ICMP协议
![](/icons/49538dou.gif)
2表示为IGMP协议
![](/icons/49538dou.gif)
6表示为TCP协议
![](/icons/49538dou.gif)
17表示为UDP协议
类似地
![](/icons/49538dou.gif)
许多应用
![](/icons/49538chengxu.gif)
都可以使用TCP或UDP来传送数据
![](/icons/49538dou2.gif)
运输层协议在生成报文首部时要存入
![](/icons/49538yi.gif)
个应用
![](/icons/49538chengxu.gif)
![](/icons/49538de.gif)
标识符
![](/icons/49538dou2.gif)
TCP和UDP都用
![](/icons/49538yi.gif)
个16 bit
![](/icons/49538de.gif)
端口号来表示区别
![](/icons/49538de.gif)
应用
![](/icons/49538chengxu.gif)
![](/icons/49538dou2.gif)
TCP和UDP把源端口号和目
![](/icons/49538de.gif)
端口号分别存入报文首部中
网络接口分别要发送和接收IP
![](/icons/49538dou.gif)
ARP和RARP数据
![](/icons/49538dou.gif)
因此也必须在以太网
![](/icons/49538de.gif)
帧首部中加入某种形式
![](/icons/49538de.gif)
标识
![](/icons/49538dou.gif)
以指明生成数据
![](/icons/49538de.gif)
网络层协议
![](/icons/49538dou2.gif)
为此
![](/icons/49538dou.gif)
以太网
![](/icons/49538de.gif)
帧首部也有
![](/icons/49538yi.gif)
个16 bit
![](/icons/49538de.gif)
帧类型域
7、分用(Demultiplexing)
当目
![](/icons/49538de.gif)
主机收到
![](/icons/49538yi.gif)
个以太网数据帧时
![](/icons/49538dou.gif)
数据就开始从协议栈中由底向上升
![](/icons/49538dou.gif)
同时去掉各层协议加上
![](/icons/49538de.gif)
报文首部
![](/icons/49538dou2.gif)
每层协议盒都要去检查报文首部中
![](/icons/49538de.gif)
协议标识
![](/icons/49538dou.gif)
以确定接收数据
![](/icons/49538de.gif)
上层协议
![](/icons/49538dou2.gif)
这个过程称作分用
为协议ICMP和IGMP定位
![](/icons/49538yi.gif)
直是
![](/icons/49538yi.gif)
件很棘手
![](/icons/49538de.gif)
事情
![](/icons/49538dou2.gif)
我们把协议ICMP和IGMP和IP放在同
![](/icons/49538yi.gif)
层上
![](/icons/49538dou.gif)
那是
![](/icons/49538yinwei.gif)
事实上它们是IP
![](/icons/49538de.gif)
附属协议
![](/icons/49538dou2.gif)
但是我们又把它们放在IP层
![](/icons/49538de.gif)
上面
![](/icons/49538dou.gif)
这是
![](/icons/49538yinwei.gif)
ICMP和IGMP报文都被封装在IP数据报中
对于ARP和RARP我们也遇到类似
![](/icons/49538de.gif)
难题
![](/icons/49538dou2.gif)
在这里我们把它们放在以太网设备驱动
![](/icons/49538chengxu.gif)
![](/icons/49538de.gif)
上方
![](/icons/49538dou.gif)
这是
![](/icons/49538yinwei.gif)
它们和IP数据报
![](/icons/49538yi.gif)
样
![](/icons/49538dou.gif)
都有各自
![](/icons/49538de.gif)
以太网数据帧类型
![](/icons/49538dou2.gif)
但
![](/icons/49538dou.gif)
我们又把ARP作为以太网设备驱动
![](/icons/49538chengxu.gif)
![](/icons/49538de.gif)
![](/icons/49538yi.gif)
部分
![](/icons/49538dou.gif)
放在IP层
![](/icons/49538de.gif)
下面
![](/icons/49538dou.gif)
其原因在逻辑上是合理
![](/icons/49538de.gif)
当进
![](/icons/49538yi.gif)
步描述TCP
![](/icons/49538de.gif)
细节时
![](/icons/49538dou.gif)
我们将看到协议确实是通过目
![](/icons/49538de.gif)
端口号
![](/icons/49538dou.gif)
源IP地址和源端口号进行解包
8、客户服务器模型
大部分网络应用
![](/icons/49538chengxu.gif)
在编写时都假设
![](/icons/49538yi.gif)
端是客户
![](/icons/49538dou.gif)
另
![](/icons/49538yi.gif)
端是服务器
![](/icons/49538dou.gif)
其目
![](/icons/49538de.gif)
是为了让服务器为客户提供
![](/icons/49538yi.gif)
些特定
![](/icons/49538de.gif)
服务
我们可以将这种服务分为两种类型:重复型或并发型
重复型服务器通过以下步骤进行交互:
1. 等待
![](/icons/49538yi.gif)
个客户请求
![](/icons/49538de.gif)
到来
2. 处理客户请求
3. 发送响应给发送请求
![](/icons/49538de.gif)
客户
4. 返回步骤1
重复型服务器主要
![](/icons/49538de.gif)
问题发生在2状态
![](/icons/49538dou2.gif)
在这个时候
![](/icons/49538dou.gif)
它不能为其他客户机提供服务
并发型服务器采用以下步骤:
1. 等待
![](/icons/49538yi.gif)
个客户请求
![](/icons/49538de.gif)
到来
2. 启动
![](/icons/49538yi.gif)
个新
![](/icons/49538de.gif)
服务器来处理这个客户
![](/icons/49538de.gif)
请求
![](/icons/49538dou2.gif)
在这期间可能生成
![](/icons/49538yi.gif)
个新
![](/icons/49538de.gif)
进程、任务或线程
![](/icons/49538dou.gif)
并依赖底层操作系统
![](/icons/49538de.gif)
支持
![](/icons/49538dou2.gif)
这个步骤如何进行取决于操作系统
![](/icons/49538dou2.gif)
生成
![](/icons/49538de.gif)
新服务器对客户
![](/icons/49538de.gif)
全部请求进行处理
![](/icons/49538dou2.gif)
处理结束后
![](/icons/49538dou.gif)
终止这个新服务器
3.返回步骤1
并发服务器
![](/icons/49538de.gif)
优点在于它是利用生成其他服务器
![](/icons/49538de.gif)
思路方法来处理客户
![](/icons/49538de.gif)
请求
![](/icons/49538dou2.gif)
也就是说
![](/icons/49538dou.gif)
每个客户都有它自己对应
![](/icons/49538de.gif)
服务器
![](/icons/49538dou2.gif)
如果操作系统允许多任务
![](/icons/49538dou.gif)
那么就可以同时为多个客户同时服务
我们对服务器
![](/icons/49538dou.gif)
而不是对客户进行分类
![](/icons/49538de.gif)
原因是
![](/icons/49538yinwei.gif)
对于
![](/icons/49538yi.gif)
个客户来说
![](/icons/49538dou.gif)
它通常并不能够辨别自己是和
![](/icons/49538yi.gif)
个重复型服务器或并发型服务器进行对话
![](/icons/49538yi.gif)
般来说
![](/icons/49538dou.gif)
TCP服务器是并发
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
而UDP服务器是重复
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
但也存在
![](/icons/49538yi.gif)
些例外
9、端口号
我们前面已经指出过
![](/icons/49538dou.gif)
TCP和UDP采用16比特
![](/icons/49538de.gif)
端口号来识别应用
![](/icons/49538chengxu.gif)
![](/icons/49538dou2.gif)
那么这些端口号是如何选择
![](/icons/49538de.gif)
呢?
服务器
![](/icons/49538yi.gif)
般都是通过人们所熟知
![](/icons/49538de.gif)
端口号来识别
![](/icons/49538de.gif)
![](/icons/49538dou2.gif)
例如
![](/icons/49538dou.gif)
对于每个TCP/IP实现来说
![](/icons/49538dou.gif)
FTP服务器
![](/icons/49538de.gif)
TCP端口号都是21
![](/icons/49538dou.gif)
每个Telnet服务器
![](/icons/49538de.gif)
TCP端口号都是23
![](/icons/49538dou.gif)
每个TFTP(简单文件传输协议)服务器
![](/icons/49538de.gif)
UDP端口号都是69
![](/icons/49538dou2.gif)
任何TCP/IP实现所提供
![](/icons/49538de.gif)
服务都用众所周知
![](/icons/49538de.gif)
1-1023的间
![](/icons/49538de.gif)
端口号
![](/icons/49538dou2.gif)
这些人们所熟知
![](/icons/49538de.gif)
端口号由Internet端口号分配机构(Internet Assigned Numbers Authority, IANA)来管理
到1992年为止
![](/icons/49538dou.gif)
人们所熟知
![](/icons/49538de.gif)
端口号介于1-255的间
![](/icons/49538dou2.gif)
256-1023的间
![](/icons/49538de.gif)
端口号通常都是由Unix系统占用
![](/icons/49538dou.gif)
以提供
![](/icons/49538yi.gif)
些特定
![](/icons/49538de.gif)
Unix服务――也就是说
![](/icons/49538dou.gif)
提供
![](/icons/49538yi.gif)
些只有Unix系统才有
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
而其他操作系统可能不提供
![](/icons/49538de.gif)
服务
![](/icons/49538dou2.gif)
现在IANA管理1-1023的间所有
![](/icons/49538de.gif)
端口号
Internet扩展服务和Unix特定服务的间
![](/icons/49538de.gif)
![](/icons/49538yi.gif)
个差别就是Telnet和Rlogin
![](/icons/49538dou2.gif)
它们 2者都允许我们通过计算机网络登录到其他主机上
![](/icons/49538dou2.gif)
Telnet是采用端口号为23
![](/icons/49538de.gif)
TCP/IP标准且几乎可以在所有操作系统上进行实现
![](/icons/49538dou2.gif)
相反
![](/icons/49538dou.gif)
Rlogin最开始时只是为Unix系统设计
![](/icons/49538de.gif)
(尽管许多非Unix系统现在也提供该服务)
![](/icons/49538dou.gif)
因此在80年代初
![](/icons/49538dou.gif)
它
![](/icons/49538de.gif)
有名端口号为513
客户端通常对它所使用
![](/icons/49538de.gif)
端口号并不关心
![](/icons/49538dou.gif)
只需保证该端口号在本机上是唯
![](/icons/49538yi.gif)
![](/icons/49538de.gif)
就可以了
![](/icons/49538dou2.gif)
客户端口号又称作临时端口号(即存在时间很短暂)
![](/icons/49538dou2.gif)
这是
![](/icons/49538yinwei.gif)
它通常只是在用户运行该客户
![](/icons/49538chengxu.gif)
时才存在
![](/icons/49538dou.gif)
而服务器则只要主机开着
![](/icons/49538de.gif)
![](/icons/49538dou.gif)
其服务就运行
大多数TCP/IP实现给临时端口分配1024-5000的间
![](/icons/49538de.gif)
端口号
![](/icons/49538dou2.gif)
大于5000
![](/icons/49538de.gif)
端口号是为其
延伸阅读
最新评论