TCP头部格式

字段名称

长度(比特)

含义

TCP头部(20字节~)

发送方端口号

16

发送网络包的程序的端口号

接收方端口号

16

网络包的接收方程序的端口号

序号(发送数据的顺序编号)

32

发送方告知接收方该网络包发送的数据相当于所有发送数据的第几个字节

ACK号(接收数据的顺序编号)

32

接收方告知发送方接收方已经收到了所有数据的第几个字节。其中ACK是acknowledge的缩写

数据偏移量

4

表示数据部分的起始位置,也可以认为表示头部的长度

保留

6

该字段为保留,现在未使用

控制位

6

该字段中的每个比特分别表示以下通信控制含义。

URG:表示紧急指针字段有效

ACK:表示接收数据序号字段有效,一般表示数据已被接收方接收

PSH:表示通过flush操作发送的数据

RST:强制断开连接,用于异常中断的情况

SYN:发送方和接收方相互确认序号,表示连接操作

FIN:表示断开连接

窗口

16

接收方告知发送方窗口大小(即无需等待确认可一起发送的数据量)

校验和

16

用来检查是否出现错误

紧急指针

16

表示应紧急处理的数据位置

可选字段

可变长度

除了上面的固定头部字段之外,还可以添加可选字段,但除了连接操作之外,很少使用可选字段

IP头部格式

字段名称

长度(比特)

含义

IP头部(20字节~)

版本号

4

IP协议版本号,目前使用的版本是4

头部长度(IHL)

4

IP头部的长度。可选字段可导致头部长度变化,因此这里需要指定头部的长度

服务类型(ToS)

8

表示包传输优先级。

总长度

16

表示IP消息的总长度

ID号

16

用于识别包的编号,一般为包的序列号。如果一个包被IP分片,则所有分片都拥有相同的ID

标志(Flag)

3

该字段有3个比特,其中2个比特有效,分别代表是否允许分片,以及当前包是否为分片包

分片偏移量

13

表示当前包的内容为整个IP信息的第几个字节开始的内容

生存时间(TTL)

8

表示包的生存时间,这是为了避免网络出现回环时一个包永远在网络中打转。每经过一个路由器,这个值就会减1,减到0时这个包就会被丢弃

协议号

8

协议号表示协议的类型(以下均为十六机制)。

TCP:06

UDP:11

ICMP:01

头部校验和

16

用于检查错误,现在已不使用

发送方IP地址

32

网络包发送方的IP地址

接收方IP地址

32

网络包接收方的IP地址

可选字段

可变长度

除了上面的固定头部字段之外,还可以添加可选字段,但除了连接操作之外,很少使用可选字段

MAC头部的字段

字段名称

长度(比特)

含义

MAC头部(14字节)

接收方MAC地址

48

网络包接收方的MAC地址,在局域网中使用这一地址来传输网络包

发送方MAC地址

48

网络包发送方的MAC地址,接收方通过它来判断是谁发送了这个包

以太类型

16

使用的协议类型。以下是一些常见的类型,一般在TCP/IP通信中只使用0800和0806这两种。

0000-05DC:IEEE 802.3

0800         :IP协议

0806         :ARP协议

86DD        :IPv6

UDP头部中的控制信息

字段名称

长度(比特)

含义

UDP头部(8字节)

发送方端口号

16

网络包发送方的端口号

接收方端口号

16

网络包接收方的端口号

数据长度

16

UDP头部后面数据的长度

校验和

16

用于校验错误

网络中TCP、IP、MAC、UDP的头部格式信息的更多相关文章

  1. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  2. Python中的socket网络编程(TCP/IP,UDP)讲解

    在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...

  3. 网络协议: TCP/IP 和UDP/IP

    网络协议: TCP/IP 和UDP/IP TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议. ...

  4. 网络编程TCP/IP详解

    网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...

  5. 网络知识--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一.OSI七层网络协议OSI是Open System Int ...

  6. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)

     reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...

  7. 加深理解HTTP请求---网络基础TCP/IP

    为了了解HTTP,必须的了解TCP/IP协议族. 通常使用的网络实在TCP/IP协议族的基础上运作的.而HTTP就属于他的一个子集. 1.TCP/IP 协议族 计算机与网络设备要相互通信,双方就必须基 ...

  8. 网络协议TCP/IP、IPX/SPX、NETBEUI简介

    网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...

  9. Socket网络编程(TCP/IP/端口/类)和实例

    Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...

随机推荐

  1. [AWS vs Azure] 云计算里AWS和Azure的探究(4)

    云计算里AWS和Azure的探究(4) ——Amazon EC2 和 Windows Azure Virtual Machine 接下来我们来看看Azure VM的创建.Azure里面虚拟机的创建跟A ...

  2. Android 视觉规范

    各种分辨率下图片尺寸 工程师通常开发三套UI布局文件,所以设计师通常也要不同的需求处理2-3套切图. con Type Standard Asset Sizes (in Pixels), for Ge ...

  3. 一、图解Java中String不可变性

    这里有一堆例子来说明Java的String的不可变性. 1.声明一个String String s = "abcd"; s 变量保存string对象的引用,下面的箭头解释成保存了哪 ...

  4. 解决chrome extension无法下载的问题

    由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...

  5. Python实例获取mp3文件的tag信息

    下面利用一个python的实例程序,来学习python.这个程序的目的就是分析出所有MP3文件的Tag信息并输出. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  6. Eigen教程(8)

    整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 原生缓存的接口:Map类 这篇将解释Eigen如何与原生raw C/C++ 数组混合 ...

  7. zip伪加密

    简单的话来阐述 zip伪协议的意思是说本来不需要密码的zip文件然后通过修改标志位,然后就可以达到有密码的效果对吗?但是他实际是没有密码. 一个 ZIP 文件由三个部分组成: 压缩源文件数据区+压缩源 ...

  8. Thinkphp CURD中的where方法

    今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...

  9. linux中注册系统服务—service命令的原理通俗

    能够使用service命令进行操作的,就是已经注册成为linux的系统服务了.window中也可以注册成为系统服务的办法. service命令用的次数真不少,就是比较多的关联点,用了很多次了,还是有些 ...

  10. 【WPF】软件更新程序的设计思路

    目标:客户端程序在启动时,自动联网检查服务端是否有新的版本,有则提示用户更新客户端. 思路: 1.打开Visual Studio,在主体程序的解决方案下再新建一个叫自动更新程序的项目.主体程序的目录是 ...