一、 协议栈
tcp/ip 分为四层,每一层负责不同的通信功能
(1)链路层 ,通常包括了操作系统的驱动程序和计算机的网络接口卡,负责处理物理接口的细节,常见的协议有slip,ppp等。
(2)网络层,负责网络中两台主机的通信,以及处理分租在网络中的选路。在TCP/IP协议族中,包括有网际协议ip,icmp,igmp等
(3)传输层,负责两台主机上应用程序提供端到端的通信。在tcp/ip协议族中,包含了tcp和udp两个比较重要的传输协议。
(4)应用层,负责处理特定的应用程序细节。比如telnet远程登录,ftp文件传输协议,smtp邮件传输协议等
通过分层,两台主机间的通信形式入下:
二、几个协议
1. 以太网链路层协议
802.2统一了CSMA/CD网络,令牌总线网络,令牌环网络的特性而制定的标准,它同以太网的帧格式不同。
可以看到802.2定义的帧和以太网帧都有最小长度要求,分别为38字节和46字节。大部分的字段都有相同的含义,我们一般最常见的是以太网的封帧格式。
2.SLIP(Serial Line IP)
串行线路IP ,它是一种在串行线路上对IP数据报进行封装的简单形式,详见RFC1055。
帧格式的定义如下:
(1) 其封装的ip数据报以一个称为end(0xc0)的特殊字符结束.
(2)如果ip报文中某个字符为end,那么就要连续传输两个字节0xdb和0xdc来取代它,0xdb称为SLIP的esc字符。
(3)如果ip报文中某个字符为SLIP的esc字符,那么就连续传输两个字节0xdb和0xdd来取代。
3.PPP点对点协议
PPP协议对SLIP协议做了些改进,比如SLIP协议数据帧中没有类型标志,没有校验和。另外PPP相比SLIP还有一些优点,比如 支持在单根串行线路上运行多种协议,不止是IP协议,通信双发可以进行IP地址的动态协商等等。
帧格式的定义如下:
(1)每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,始终是0xff,然后是一个值为0x03的控制字节。
(2)当遇到字符0x7e时,需连续传送两个字符:0x7d和0x5e,以实现标志字符的转移。
(3)当遇到转义字符0xd7d时,需要连续传送两个字符0x7d和0x5d。
(4)默认情况下,如果字符的值小于0x20,一般都要进行转义。
三、几个概念
1 .封装成帧
当应用程序传送数据时,数据被送入协议栈中,其中每一层收到数据都要增加一些首部信息,如添加TCP首部构成TCP报文段,然后再传送给IP层构成IP数据报,再随后构成以太网帧发送出去。
2.分用与复用
当目的主机收到一个以太网数据时,数据就开始从协议栈中由底向上发送,同时去掉各层协议加上的报文首部,每个协议都会检查报文首部中的协议标识,以确定接受数据的上层协议。这个过程称为分用。同理,应用程序在发送数据时将数据从高层向下传送,对下层的协议进行重用,这个称为复用。
ICMP和IGMP作为IP的附属协议,因为他们的报文都被封装在IP数据报中。
ARP和RARP之所以放在以太网驱动程序的上方,是因为他们和IP数据报一样,都有各自的以太网数据帧类型。另一方面ARP作为以太网设备的一部分,逻辑上应该放在IP层的下面。
3. 环回接口
即localhost,大多数系统将IP地址127.0.0.1分配给这个接口,当数据发送到目的地址是环回地址时,依旧会通过传输层和网络层进行发送,只是当ip数据报离开网络层时把它返回给自己。之所以这样做(其实可以完全将数据通过链路层发送给自己),是因为要简化分层的设计,这样环回接口就可以被看做是网络层下面的一个链路层。网络层把一份数据报返回给环回接口,就像传给其他链路层一样,只不过环回接口把它返回到IP的输入队列中。
4.最大传输单元MTU
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性成为MTU,最大传输单元。比如IP层有一个数据报要发送,而且数据超过了链路层的MTU,那ip层就需要进行分片报数据报分成若干片。
5.路径MTU
当在同一个网络上的两台主机进行通信时,若果主机之间要通过多个网络,那么每个网络的链路层就可能有不同的MTU(协议不同)。那么在该通信路径中的最小MTU就叫做路径MTU。发送的数据如果超过该MTU同样需要分片,但路径MTU并不是一个固定的常数,因为它取决于当时所选的路由。
完。