网络协议详解

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 08:49
下一篇 2018-04-30 09:32

相关推荐

  • 磁盘存储和文件系统

    磁盘存储和文件系统: 磁盘设备的文件命名:/dev/dev_file虚拟磁盘:/dev/vd磁盘标识: /dev/sda,/dev/sdb……磁盘分区:/dev/sda1,/dev/sdb2…… chs 磁盘sector 扇区 512bytestrack 磁道head 磁头cylinder柱面 使用磁盘: 分区创建文件系统:格式化挂载:分配目录名 hexdu…

    Linux笔记 2018-05-20
  • lamp

    1.phpmyadmin 需要phpadmin包组和yum安装lamp 创建phpadmin配置文件 安装字符集包组 开启mysql服务 创建测试账号 编写测试phpmysql 最后开启httpd服务 测试成功 进行phpmyadmin 设置数据库账号 密码 登陆成功 测试成功 2.搭建wordpress 在phpmyadmin实验上进行 在phpmyadm…

    Linux笔记 2018-06-25
  • linux学习练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。[root@localhost etc]# cp -r /etc/skel /home/tuser1[root@localhost ~]# getfacl /home/tuser1/getfacl: Removing lead…

    Linux笔记 2018-07-15
  • 阿X吃鸡录————第四站

    diff -u a b >ab 生成ab即为补丁,在a或者b文件丢失时 patch -b a/b ab 生成丢失的文件内容 etc/下创建nologin文件会使普通文件无法登陆(普通用户登陆会显示文件中的内容) [-t num ] 判断是否文件在终端被打开(文件描述符) read 对变量赋值 echo -e “ \c” read name 会不产生换行…

    Linux笔记 2018-08-06
  • linux

    输入、输出重定向  >若文件不存在,则创建,并将正确的输出填充,若文件已存在,则覆盖原内容 >> 若文件不存在,则创建,并将正确的输出内容填充,若文件已存在,则追加内容 2> 若文件不存在,则创建,并将错误的输出填充,若文件已存在,则覆盖原内容2>> 若文件不存在,则创建,并将错误的输出内容填充,若文件已存在,则追加内容 …

    Linux笔记 2018-05-26