tcp/ip详解
简介:OSI参考模型分七层:物理层,链路层,网络层,传输层,会话层,表示层,应用层
层间的数据称为:PDU(协议数据单元);每层的PDU称为不同:链路层-帧(frame),网络层-分组(packet),传输层-数据报(segement)
网络数据交换方式:
电路交换:独占传输媒介,建立连接,传输数据,断开连接;如电话系统
分组交换:分组交换分:数据报分组交换和虚电路分组交换;数据报分组交换:分组数据会选择不同网络节点,不同路径会无序的到达目的;虚电路交换:建立连接后,分组数据会采用相同的传输路径到达目的:
不同网络设备转发的数据网络层次不同,当前层(不同网络的共同层)的下层可以不同,所以可以是不同的设备,即可以连接不同的设备
转发器/集线器: 物理层
网桥/交换机: + 链路层
路由器 : +网络层
网关 : +会话层+表示层+传输层+应用层
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合。 T C P / I P通常被认为是一个四层协议系统
每一层负责不同的功能:
1) 链路层, 有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。(对物理层比特流传输的加强,比特流和帧之间的转换,传输错误检测,流量控制)
数据链路层有三个目的:
为IP模块发送和 接收IP数据报。
为ARP模块发送ARP请求和接收ARP应答。
为RARP发送RARP请 求和接收RARP应答
ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议
2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在T C P / I P协议族中,网络层协议包括 I P协议(网际协议) ,I C M P协议(I n t e r n e t互联网控制报文协议) ,以及I G M P协议(I n t e r n e t组管理协议) 。
I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息。
第6章对I C M P的有关细节进行讨论。尽管I C M P主要被I P使用,但应用程序也有可能访问它。我
们将分析两个流行的诊断工具,P i n g和Tr a c e r o u t e(第7章和第8章) ,它们都使用了I C M P。
I G M P是I n t e r n e t组管理协议。它用来把一个U D P数据报多播到多个主机。
A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环
网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。
3 ) 运输层主要为两台主机上的应用程序提供端到端的通信。在 T C P / I P协议族中,有两个
互不相同的传输协议:T C P(传输控制协议)和U D P(用户数据报协议) 。
T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分
成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟
等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
而另一方面,U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组
从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠
性必须由应用层来提供。
这两种运输层协议分别在不同的应用程序中有不同的用途,这一点将在后面看到。
4 ) 应用层负责处理特定的应用程序细节。
二
网络层 I P提供的是一种不可靠的服务。也就是说,它只是尽可能快
地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面, T C P在不可
靠的I P层上提供了一个可靠的运输层。为了提供这种可靠的服务, T C P采用了超时重传、发
送和接收端到端的确认分组等机制。
三封装
当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作
一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部
信息) ,该过程如图 1 - 7所示。T C P传给I P的数据单元称作 T C P报文段或简称为 T C P段(T C P
s e g m e n t) 。I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比特
流称作帧(Fr a m e )。
I P和网络接口层之间传送的数据单元是分组( p a c k e t) 。
分组既可以是一个I P数据报,也可以是I P数据报的一个片(f r a g m e n t) 。我们将在11 . 5节
讨论IP数据报分片的详细情况。
由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此I P必须在
生成的I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为
8 b i t的数值,称作协议域。 1表示为I C M P协议,2表示为I G M P协议,6表示为T C P协议,1 7表
示为U D P协议。
类似地,许多应用程序都可以使用 T C P或U D P来传送数据。运输层协议在生成报文首部
时要存入一个应用程序的标识符。 T C P和U D P都用一个1 6 b i t的端口号来表示不同的应用程序。
T C P和U D P把源端口号和目的端口号分别存入报文首部中。
网络接口分别要发送和接收 I P、A R P和R A R P数据,因此也必须在以太网的帧首部中加入
某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的帧
类型域。
四分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各
层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的
上层协议。这个过程称作分用(D e m u l t i p l e x i n g)
五链路层作用:
在T C P / I P协议族中,链路层主要有三个目的: (1)为I P模块发送和
接收I P数据报;(2)为A R P模块发送A R P请求和接收A R P应答;(3)为R A R P发送R A R P请
求和接收R A R P应答。T C P / I P支持多种不同的链路层协议,这取决于网络所使用的硬件,如以
太网、令牌环网、F D D I(光纤分布式数据接口)及R S-2 3 2串行线路等。
IP(网际协议)
不可靠无连接数据报协议。连接和可靠没有必然联系,连接话更容易实现可靠性(差错控制,流量控制),无连接跨越异构网络,不可靠尽可能交付,可靠性由高层协议保证。
ip协议头部至少20个字节的固定格式以及头部其他可选部分总共60个字节。
VER:版本字段。
HLEN:首部长度字段标识,因为ip头部长度并不是固定需要此字段标识,该字段只有4bit(0-16),需要表示20到60字节,所以每个值的单位是4字节,此字段值的范围就是5-15。
Total length:总长度,整个ip协议的长度,单位是字节。
Sevice type:该分组期望的服务质量。(ip只是尽最大努力交付),适用于有连接通信,或者多媒体通信保证质量。
分组控制:
Identification:标识分组使得全网唯一(源站+每次发生加1)
Flags:是否分片。第一个比特无意义;第二个比特N(not):01是否允许分片;第二个比特M(more fragments)1非最后片,0最后一片
Fragmentation offset:片偏移量,每个值的单位表示8个字节
time to live:生存时间,路由转发,每过一个路由减1,为0丢弃,保证环网无限传播;
protocal:使用ip协议的高层协议类型
Header checksum:校验和,只对ip头部校验。(校验原理:将头部数据每16bit累加取反得到值为校验和,接收数据再头部进行相应处理)
Option:选项字段, (可选)用于网络调试和测试(补充)
帧结构和ip帧
fcs:帧校验
分组处理(fragmentation)
由于物理网络最大传输单元限制(MTU),数据需要进行分片处理。
分片的特点:
仅由路由器进行分片操作:转发分组时
每个分片都包含IP头部分(分片只是对数据部分分片;标志字段:flags/offset,标志字段/片偏移量
如果设置不允许分片而又大于最大传输,片将被丢弃
片可以再分片,再分片的标志字段和偏移量都是相对源分组的
重组操作(reassembly)
仅由目的主机重组操作:数据交给目的主机的上层协议处理
IP通信的无连接片传输路径可能不一致
片不完整重组失败丢弃整个分组
重组是有时限的
重组表:以重组表的方式重组数据
将分组归类,根据分组表,片去掉首部,插入到合适位置。
ARP
主机标识:网络地址IP(全局)和物理地址MAC(本地性)来标识;
物理地址只有主机自己知道,通信是知道目标的网络地址,所以需要获取目标的物理地址(最终是基于物理传输)
地址解析(address resolution)
网络地址->物理地址
带有目的ip地址以广播形式的请求整个物理网络,单播方式回应报文包含iP对应的mac地址,然后保存在ARP缓存中
arp分组格式:
arp帧结构:
arp缓存映射关系,只会根据请求的广播和应答请求的发送者的网络地址和物理地址更新。
以太网的帧在不同物理网中传输源MAC和目的MAC地址的是不同的。
arp协议虽然可以不同的物理网络使用,但是其广播的方式,所以一般用局域网,以太网,对应长距离通信广域网一般用类似的其他协议,更有效率;
ICMP:Internet Control Message Protocol)Internet控制报文协议
IP协议只是一种传输数据的数据报协议,缺乏应付出现差错的能力。
ICMP对ip协议(或者高参差的UDP/TCP)提供差错报告机制的辅助协议(只是报告并没有解决机制)
差错报告只能发送给源分组的源站,源站对报告的差错不一定能解决
差错点不一定是当前路由(检测到差错的路由不一定是出现差错的路由)
数据传输路径和报告机制的传输路径可能不一致。
ICMP协议在IP协议之上,逻辑上和ip协议同在网络层;ICMP报文数据封装在IP协议的数据部分内。
UDP(用户数据报协议 user datagram protocol
传输层介于应用层和网络层通信(网络层基于网络节点间通信)是一种端到端的进程间通信。
提高差错控制和流量控制机制。
传输层的不可靠(区别ip层不可靠,是为了进程间通信提供)
通信特点:
作用:
格式:
封装:
tcp transmission cotrol protocol 传输控制协议
需求:大数据量,可靠性机制要求严格(如果是无连接不可靠大量数据不易控制,需要一种流控差控)
特点:tcp流的方式