网络协议详解

TCP协议、IP协议

7dd795a18ba08b59db9bedf8be661b06

TCP包头:

1.源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个程序需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个

2.序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始

3.确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号

4.数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节

URG表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent

pointer)只有当URG=1时才有效

ACK表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面

的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

PSH提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空

间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中

RST如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必

须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,

带RST标志的TCP报文段称为复位报文段

SYN在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段

FIN表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:

“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

6.窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段

的确认号开始允许对方发送的数据量

7.校验和:提供额外的可靠性

8.紧急指针:标记紧急数据在数据字段中的位置

9.选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表

示,选项部分最长为:(2^4-1)*4-20=40字节

常见选项:

最大报文段长度:Maxium Segment Size,MSS 期望对方发送TCP报文段时那个数据字段的长度。默认是536字节。

窗口扩大:Windows Scaling

为了扩大窗口,由于TCP首部的窗口大小字段长度是16位,所以其表示的最大数是

65535。但是随着时延和带宽比较大的通信产生(如卫星通信),需要更大的窗口

来满足性能和吞吐率,所以产生了这个窗口扩大选项

时间戳: Timestamps

可以用来计算RTT(往返时间),发送方发送TCP报文时,把当前的时间值放入时间

戳字段,接收方收到后发送确认报文时,把这个时间戳字段的值复制到确认报文中,

当发送方收到确认报文后即可计算出RTT。

 

IP 报头

1.版本:占4位,指 IP 协议的版本目前的IP协议版本号为4

2.首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部

长度的最大值是60字节

3.区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使

用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的

情况下都不使用

4.总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为

65535 字节.总长度必须不超过最大传送单元 MTU

5.标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1, 也用于数据包

分片,在同一个包的若干分片中,该值是相同的

6.标志(flag):占3位,目前只有后两位有意义

7.DF: Don‘t Fragment,中间的一位,只有当 DF=0 时才允许分片

8.MF: More Fragment,最高位,MF=1表示后面还有分片。MF=0 表示最后一个分片

9.片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位

10.生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的

最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字

RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255

11.协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据

部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为

TCP 协议, 17表示为 UDP 协议

12.首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验

码而采用简单的计算方法

13.源地址和目的地址:都各占4字节,分别记录源地址和目的地址

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97269

(1)
天策天策
上一篇 2018-04-30
下一篇 2018-04-30

相关推荐

  • 参加马哥教育面授班

    很兴奋,今天是开班的第6天了,课程的具体安排为,1、3、5上课,2、4、6实操课。课堂上目前是王老师授课,讲的都是满满的干货,很详细。让我再次确信参加这次培训不会有错。 面授班与在网络学习,我觉得学习效果差别还是蛮大的。参加面授班能很好的约束我的行为,不会出现学着学着就打开游戏或看电影了,学习效率很高,哈哈。初次见到马哥教育的各个老师发现都很平易近人,学习上…

    Linux笔记 2018-07-21
  • 第二周作业

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 ls命令 显示目标列表 ls 选项 参数 -a 显示所有目录文件 -A 显示所有文件目录除了 “.” “..” -d 仅显示目录名 -i 显示文件索引节点号(inode) cp命令 复制命令,将一个文件或目录复制到指定文件或目录、 cp 选项 参数 -f 强行复制文件或目录,不论目标文…

    Linux笔记 2018-07-29
  • 4.8整理

    根据教学顺序整理

    Linux笔记 2018-04-08
  • Linux文件管理命令,命令状态返回值及命令展开

    ls命令 功能: 列出目录下的所有文件和目录 语法格式: ls [OPTION]… [FILE]… 常用选项: -a :列出所有文件和目录 -A :列出除.和..的所有文件 -l :长选项,显示文件的详细属性信息 -rw——-. 1 root root 1.4K May 1 00:50 anaconda-ks.cfg -:文件类型 -:普通文…

    Linux笔记 2018-05-27
  • 第一周总结→干货

    需要掌握的大部分前期基础知识

    2018-04-01
  • ansible_playbook

    —– hosts: allremote_user: root vars:ports:-81-82-83 vars:ports:– listen_port: 81– listen_port: 82– listen_port: 83 vars:ports:– web1:port: 81#na…

    Linux笔记 2018-07-30