网络协议详解

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

相关推荐

  • Linux基础知识

    计算机组成、Linux的发行版、Linux的哲学思想、Linux常用命令、Linux获取帮助信息

    Linux笔记 2018-05-10
  • 第一周作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定。

    Linux笔记 2018-05-13
  • Linux任务计划、周期性任务执行

    Linux任务计划、周期性任务执行 at at命令用于在指定时间执行命令。执行结果会通过邮件发送给用户 at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行 语法 at(选项)(参数) atq: 查询任务列表 atrm: 删除指定任务 选项 -f:指定包含具体指令的任务文件;…

    Linux笔记 2018-04-03
  • linux 的基础命令以及快捷键的总结

    前两张给大家介绍了 计算机的最基础的东西,今天才真正开始学习linux,那么也是linux最基础的东西。 学习了大约两周的时间吧!对于我这个爱国者 英语啥也不懂的来说。好想说声“马哥 能退钱不,我想回农村”, 当然了 这只是个玩笑话,我是谁,” 打不死的小强”,要么你征服我,要么你被我征服 ,对于我来说,前者别想。 言归正…

    2018-07-28
  • HTTP服务和APACHE

    http协议 Httpd介绍 Htdtpd2.2配置 Httpd2.4配置 编译安装http

    2018-06-19
  • linux下find的用法及练习

    find命令详解

    Linux笔记 2018-04-15