Linux 之TCP & UDP & IP报头信息

  1. TCP的特点及报头信息
    TCP : 面向连接的 可靠的 字节流式务
    1、面向连接的:网络中的两个主机交互数据之前,必须先建立连接;操作系统内核会为连接分配一定的资源;在数据发送之后,必须断开连接,释放连接资源;
    2、可靠的:数据能够安全的、完整的传输到对方(数据不丢失、不出错、乱序、不重复);
    3、字节流:数据是没有界限的:send 的次数 和 recv 的次数没有关系;一次 send 发送的数据在网络中通过几个 TCP 报文段传输是不确定的;如果一次 recv 没有将接受缓冲区中的数据读取完,则剩余的数据继续保持在接受缓冲区中;

-在这里插入图片描述
使用 tcpdump 观察 TCP 头部信息、连接的建立和关闭

1、16位源端口号 和 16位目的端口号 :告知主机该报文段是来自哪里(源端口)以及传送给那个上层协议或应用程序(目的端口)的;
2、32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每一个字节的编号;
3、32位确认号:用作对另一方发来的TCP报文段的响应,其值是收到的TCP报文段的序号值加1;
4、4位头部长度:标识该TCP头部有多少个 32 bit字(4字节);
5、6位标志:
URG: 紧急指针(urgent pointer)是否有效;
ACK: 确认号是否有效;(携带ACK标志的TCP报文段为确认报文)
PSH:提示接收端应用程序应该立即从TCP接受缓冲区中读走数据为后续数据腾出空间;
RST:要求对方重新建立连接;(携带RST标志的TCP报文段为复位报文段)
SYN:请求建立一个连接;(携带SYN标志的TCP报文段为同步报文段)
FIN:通知对方本端要关闭连接了;(携带FIN标志的TCP报文段为结束报文段)
6、16位窗口大小:TCP流量控制的一个手段;(告诉对方本端TCP接受缓冲区还能容纳多少字节的数据,使对方控制发送数据的速度)
7、16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏;(包括TCP头部及数据部分)
8、 16紧急指针:是一个正的偏移量,它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。(是向发送端向接收端发送紧急数据的方法)
9、TCP头部选项:可变长的可选信息(最多包含40字节,TCP头部最长位60字节,还包含20字节的固定部分)
在这里插入图片描述
kind: 说明选项的类型;
length: 指定该选项的总长度;
info: 选项的具体信息;
在这里插入图片描述
kind = 0: 选项表结束选项;
kind = 1: 空操作选项,(用于将TCP选项的总长度填充位4字节的整数倍);
kind = 2: 最大报文段长度选项;
kind = 3: 窗口扩大因子选项;
kind = 4: 选择性确认(SACK)选项;
kind = 5: 是 SACK 实际工作的选项;
kind = 8: 是时间戳选项;

  1. UDP 报头信息

在这里插入图片描述

  1. Ip 协议的特点及报头?

    IP 协议的特点:无连接、不可靠、无状态
    1、 无连接:指 IP 的通讯的双方都不长久地维持对方的任何信息。这样,上层协议每次 发送数据的时候,都必须明确指定对方的 IP 地址;
    2、不可靠是说: IP 协议不保证数据报能准确到达接收端,它只是说尽自己最大努力发送 ;
    3、无状态: 是说通信双方不同步传输数据的状态信息,也就是说 IP 数据报的发送、 传输、接收都是相互独立的、没有上下文关系的。那么接收端就可能收到重复的、乱序 的报文段;

    IPv4头部结构其长度通常为20字节,除非含有可变长的选项部分

在这里插入图片描述
1、4位版本号:指定IP协议的版本;
2、4位头部长度:标识该IP头部有多少个32 bit 字(4字节)(IP头部最长是60字节)
3、8位服务类型:包括一个3位的优先权字段(现在已被忽略),4位的 TOS 字段和1位保留字段(必须置0),4位的TOS字段分别表示:最小延时,最大吞吐量,最高可靠性,最小费用。其中最多有一个能置为1,应用程序应该根据实际需要来设置;
4、16位总长度:指整个IP数据报的长度,以字节为单位,因此IP数据报的最大长度为(2^16-1)字节,但由于MTU的限制,长度超过MTU的数据报都被分片传输;(IP层一次传输的数据报上限被限制为1500字节,链路层为了保持与IP层兼容,最大传输数据报也被限制为1500字节,这种特征被称为最大传输单元MTU)
5、16位标识:唯一地标识主机发送的每一个数据报;(其初始值由系统随机生成,每发送一个数据报,其值就加一,该值在数据报分片时被复制到每一个分片中,同一个数据报的所有分片都具有相同的标识值);
6、3位标志段:第一位保留,第二位表示“禁止分片”(如果设置了这一位,IP模块将不对数据报进行分片,如果IP数据报长度超过MTU的话,IP模板将丢弃该数据并返回一个ICMP差错报文),第三位表示“更多分片”(除了数据报的最后一个分片外,其他分片都要把他置1);
7、13位分片偏移:是分片相对原始IP数据报开始处(仅指数据部分)的偏移,(实际偏移是该值左移3位(乘8)后得到的);
8、8位生存时间:是数据报到达目的地之前允许经过的路由器跳数,(常见值为64,数据报在转发过程中每经过一个路由,该值减一,当其值为一时,路由器丢弃数据报,并向源端发送一个ICMP差错报文。可以防止数据报陷入路由循环);
9、8位协议:用来区分上层协议(ICMP是1,TCP是6,UDP是17);
10、16位头部效验和:由发送端填充,接收端对其使用CRC算法以检验IP数据报头部(仅检验头部)在传输过程中是否损坏,(CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。);
11、32位的源端IP地址 和 目的端IP地址:用来标识数据报的发送端 和 接收端,(一般情况下,这两个地址在整个数据报的传输过程中保持不变);
12、选项:可变长的可选信息,最多包含40字节,可选的IP选项包括:记录路由,时间戳,松散源路由选择,严格源路由选择;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值