TCP/IP基础

PDU(位,帧,数据包,段)MTU最大传输单元,以太网和IEEE802.3对数据帧的长度都有限制,其最大值分别为1500和1492字节。

如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就要进行分片(Fragmentation),把数据报分成若干片,这样每一片都小于MTU。

q当网络上的两台主机互相进行通信时,两台主机之间要经过多个网络,每个网络的链路层可能有不同的MTU,其中两台通信主机路径中的最小MTU被称作路径MTU。尽可能避免分片,分片会降低网络传输效率。
以太网帧格式头部有14个字节  6位目的地址  6为源地址  2位类型   用来区分是传给ARP  RARP还是IP网络层进行处理    链路层只识别物理地址或MAC地址  不识别逻辑地址 需要解析 IP->MAC地址   ARP解析    MAC->IP地址    反向地址解析RARP  

ICMP协议用于传递差错信息、时间、回显、网络信息等控制数据。ping程序就是将数据封装成ICMP程序来实现。

ARP协议   地址解析协议    将IP地址转换为MAC地址   上层地址传给下层的时候需要封装  ARP高速缓存中能存放IP地址与MAC地址之间的映射

RARP用于没有硬盘的主机中    想要获取无盘工作站的IP地址  RARP服务器存有MAC地址与IP地址的映射   会响应回去。

IP数据报的格式:TTL表示数据报的生存期   最多可经过的路由器的数量,数据报每经过一个路由器,TTL减1,减为0时丢弃,并发送ICMP报文通知源主机,TTL可避免数据报在路由器之间不断循环。

在IP网络中传输的单位称为IP数据包,它包括IP报头与更高层协议的相关数据。IP数据包的报头至少为20个字节,其中包括版本号,报头长度,服务类型,数据报总长度,标识,标志,片偏移,生存时间,协议和头部校验和,源,目的IP地址,先项。引入IP报头字段的目的是为网络实体提供互联机制,IP报头不仅带有数量可观的IP数据包信息,如源和目标IP地址,数据包内容等,而且还为网络实体提供了从源到目标之间传送数据包的处理方法。

看看IP报头中各个字段各代表什么。    版本号:版本号占用四个比特位,现在我们所接触到的网络中绝大部分都是IPV4网络,所以一般所捕获到的IP报头的版本号为4。    报头长度:表示的IP数据包的包头长度,这个长度不包括数据字段,最小为20个字节,最大为60个字节,其中的40个字节供IP选项使用。    服务类型:一般用于实现QoS的要求,我们现在一般捕获到的数据包中此值为一缺省值。

IP数据包总长度:它描述的是IP数据包中报头和数据包的总长度,由于其占用16个比特位,因此我们可以得出一个IP数据包的最大值为65536。    标识符:由源主机随机产生的一个号码,用于帮助重新组合一个被分段的数据包,当一个IP数据包从一个主机传输到另外一个主机时,它一般都需要通过另外一个网络,每一个物理网络都有一个最大帧的大小,也就是我们常说的最大传输单元(MTU),它限制了一个物理帧中数据的大小,当主机发送的数据超过了某一设备的MTU时,这时IP就会用一进程来对超过MTU的数据包进行分段,这个进程建立了一个小于MTU的数据报的集合,因此最终IP数据包以合适的大小发送到目标主机,由于数据包分过段,所以目标主机在接收数据包时会新建立一个缓存区来接收分段的数据包,目标主机判断某一数据包是否和其它数据包一样也是经过分段的就是通过判断标识符是否一样。在分段时只有数据会被分段,面报头是复制而作为分段数据的头部。

标志:它是用来标志数据包是否分段,其中包含DF(do not  fragment)和MF(more fragment),当DF的值为1时,则MF的值必为0,DF为1,则说明数据包有分段。同样可以知道当MF为1时,则DF为0,这表示的是数据包没有分段。当然也有可能MF和DF都为0。   片偏移量:接收主机可以使用该字段的值来计算当前分段数据在原始数据报中的原始位置,由于该字段占用13个比特位,所以其最大值为8192,由于该字段的值是以8个字节为一个单位表示的,因此该字段可以表示在原始的数据报中的最远位置可以是65528个字节。举个例子来说吧,当某个数据包的大小为640个字节,现在分成8个大小为80个字节的数据包,这样第一个数据包的偏移量为0,则第二个数据包的偏移量就为10,后面的数据包依此计算可得到最后一个数据包的片偏移量是70。当然有些时候片偏移量就是0,这表示些数据包没有分段。

生存时间:这个相信大家都很熟悉,也就是我们在使用PING命令时的TTL,理论上讲,每个处理此数据报的路由器应该用该字段的值减去它处理的时间,但是实际上,一个路由器处理这样的一个数据包并不要一秒钟,但是为了方便,实际运用中还是以一秒钟来计算,这样TTL就变成了跳步数了,而不再是时间的度量。

协议号:这个字段指示IP下一步应当把这个数据包发往更高层的协议,如TCP为6,UDP为17。     报头校验和:该字段的数值仅用来表示IP报头的校验和。IP报头被视为是由一系列的16位二进制数据流和一个初值为0的校验组成的,对原始报头的所有数值求补就得到校验和由于TTL的值会随着亿能过的网络设备而发生变化,所以每以过一个网络设备,报头校验和都会发生变化。

选项:选项为非固定信息,可变长度,选项最长可达40个字节,这个字段主要用于测试。

网际校验和:IP首部(不含校验和)反码+0x1111(0的反码)=发送端校验和  得到16位序列

  IP首部=IP首部(不含校验和)+发送端校验和

IP首部(不含校验和)反码+发送端校验和  反码=接收端的校验和

q网际校验和,英文全称(Internet Checksum)
q发送方对要发送的数据划分为许多16位字序列(如果数据的字节数为奇数,则在末尾补一字节0凑成偶数。)对这些序列反码求和,便得到校验和。
q如果数据在传输过程中没有发生任何差错,那么接收方计算校验和的结果应该为全1。如果结果不是全1(即校验和错误)。
TCP特点:
基于字节流    segment        面向连接    可靠传输   缓冲传输   全双工   流量控制    MSS最长报文大小   每个连接方通常都在通信的第一个报文段中指明这个选项,它指明本端所能接收的最大长度的报文段。上层应用缓冲区不超过536个字节  就不需要分片。ACK是确认标记。
q源端口号与目的端口号
源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。
q序号
序号表示在这个报文段中的第一个数据字节序号。
q确认号
仅当ACK标志为1时有效。确认号表示期望收到的下一个字节的序号。
q头部长度
4位,TCP头部最多60个字节
q保留位
6位,必须为0
q6个标志位
qURG-紧急指针有效
qACK-确认序号有效
qPSH-接收方应尽快将这个报文段交给应用层
qRST-连接重置
qSYN-同步序号用来发起一个连接
qFIN-表示将要终止一个连接
q窗口大小
通过窗口大小来达到流量控制。   通告各自接收窗口的大小   还通知了最大段大小  不能超过MSS。滑动窗口协议!
q校验和
对tcp头与数据进行校验。
q紧急指针
是一个正的偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
q选项与填充(选项为4字节整数倍,否则用0填充)
最常见的可选字段是最长报文大小MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。该选项如果不设置,默认为536(20+20+536=576字节的IP数据报)
TCP如何保证可靠性:
q应用数据被分割成TCP认为最适合发送的数据块,称为段传递给IP层。
q当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
q当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
qTCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP将丢弃这个报文段并且不确认(导致对方超时重传)
qTCP承载于IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对收到的数据进行重新排序。
qIP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
qTCP还能提供流量控制。TCP连接的每一方都有一定大小的缓冲空间。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值