详解TCP和UDP数据段的首部格式
TCP数据段的首部格式:
|
源端口号(16) |
目的端口号(16) |
|||
|
序列号(32) |
||||
|
确认应答号(32) |
||||
|
数据偏移(4) |
保留(6) |
代码位(6) |
窗口(16) |
|
|
校验和(16) |
紧急指针 |
|||
|
选项(长度可变) |
填充 |
|||
|
数据部份(长度可变) |
||||
TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项,因此首部的最小长度是20字节。
首部固定部分的个字段的意义如下:
1.源端口和目的端口字段——
各占2字节。端口是运输层与应用层的服务接口。
运输层的复用和分用功能都要通过端口才能实现。
2.序号字段——
占4字节。TCP是面向字节流的,一个TCP连接中传送的字节流中的每一个字节都按顺序编号。
整个要传送的字节流的起始序号必须在连接建立时设置。
首部中的序号值是指本报文段所发送的数据的第一个字节的序号。
3.确认号:
4个字节,期待收到对方下一个报文段的第一个数据字节的序号。
若确认号=N,表明到序号N-1为止的所有数据都已经正确收到!
4.数据偏移(即首部长度)——
占4位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
因首部中还有长度不确定的选项字段,故数据偏移字段是必要的
而数据偏移的单位是4字节,则此字段是用来表TCP首部的长度的,最大长度是4*15,60字节,即选项长度不超过40字节.
5.保留字段——
占 6 位,保留为今后使用,但目前应置为 0。
6.紧急URG ——
当 URG ==1 时,表明紧急指针字段有效。
它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
而不是按原来的排队顺序传送。
当URG=1,发送进程就告诉TCP有紧急数据需传送,TCP就会将紧急数据插入到本报文段的最前面,这需要和首部中的紧急指针字段配合使用.
7.确认ACK(ACKnowlegment):
当ACK=1,确认号字段才有效,当ACK=0,确认号字段无效。
TCP规定,在连接建立后所有传送的报文段都必须把ACK置1.
8.推送PSH(PuSH):
当两个进程通信时,有时一端的进程希望键入一个命令后,能立即收到对方的响应,这时TCP就可以将PSH=1,
并立即创建一个报文段发送出去,接收方TCP收到PSH=1,就会尽快交付给接收端进程,而不会再等整个缓存填满后再交付。
9.复位 RST (ReSeT) ——
当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
RST置1可以用来拒绝一个非法的报文段或者拒绝打开一个连接。
10.同步SYN:
在建立连接时用来同步序号,当SYN=1&&ACK=0,表示这是一个请求连接的报文段,
若对方同意建立连接,则在响应报文段中使得SYN=1&&ACK=1。
故SYN=1:表示这是一个连接请求和连接接收报文。
11.终止FIN:
用来释放一个连接,当FIN=1,表示此报文段发送方的数据发送完毕,并要求释放连接。
12.窗口:
我告诉你我的窗口值的目的是要你知道我一次性能接收多大的数据量。
2个字节,从0开始,窗口指的是发送本报文段的这一方的接收窗口(而不是自己的发送窗口),
窗口值告诉对方:从本报文段首部的确认号开始算起,
接收方目前允许(窗口值是经常动态变化的)对发送方发送的数据量。
窗口字段明确指出了现在允许对方发送的数据量。
13.检验和 ——
占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
14.紧急指针:
2个字节,当URG=1,紧急指针才有意义,指出本报文段中的紧急数据的字节数。
注意:当窗口值为0,也可以发送紧急数据。
15.选项:
最长为40字节,当没有选项时,TCP首部长度为20字节。
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
--------------------------------------------------------------------------------------------------------------------------------------
UDP数据段格式:
|
源端口号(16) |
目的端口号(16) |
|
长度(16) |
校验和(16) |
|
数据(若有的话) |
|
用户数据报UDP有两个字段:<数据>字段和<首部>字段。
首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是两个字节。
各字段的意义如下:
1.源端口
源端口号,在需要对方回信的时候选用,不需要的时候可用全0
2.目的端口
目的端口号,这在终点交付报文时必须要使用到。
3.长度
UDP用户数据报的长度(首部字段和数据字段),其最小值是8,也即是只有首部。
4.检验和
检测UDP用户数据报在传输的过程中是不是有错,有错就丢弃。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
详解TCP和UDP数据段的首部格式的更多相关文章
- 详解TCP与UDP
一.TCP的特点 面向连接的.可靠的.基于字节流的传输层通信协议. 将应用层的分割成报文段,并发送发给目标节点的TCP层. 数据包都有序号,对方收到则发送ACK确认,未收到则重传. 使用效验和来效验数 ...
- 第6章 传输层(详解TCP的三次握手与四次挥手)
第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...
- 详解TCP连接的“三次握手”与“四次挥手”(下)
上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手&q ...
- [转]SOCKET通信中TCP、UDP数据包大小的确定
TCP.UDP数据包大小的确定 UDP和TCP协议利用端口号实现多项应用同时发送和接收数据.数据通过源端口发送出去,通过目标端口接收.有的网络应用只能使用预留或注册的静态端口:而另外一些网络应用则可以 ...
- [转]TCP、UDP数据包大小的确定
TCP.UDP数据包大小的确定 http://blog.163.com/jianlizhao%40126/blog/static/1732511632013410101827640/ U ...
- TCP、UDP数据包大小的限制(UDP数据包一次发送多大为好)——数据帧的物理特性决定的,每层都有一个自己的数据头,层层递减
1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...
- TCP、UDP数据包大小的限制
版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa 原创文章,转载请标明出处. https://blog.csdn.net/caoshangpa/article/de ...
- 【转】TCP、UDP数据包大小的限制
来自:https://blog.csdn.net/caoshangpa/article/details/51530685 1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层 ...
- TCP和UDP数据包大小限制
1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...
随机推荐
- Swing做的非阻塞式仿飞秋聊天程序
采用Swing 布局 NIO非阻塞式仿飞秋聊天程序, 切换皮肤颜色什么的小功能以后慢慢做 启动主程序. 当用户打开主程序后自动获取局域网段IP可以在 设置 --> IP网段过滤, 拥有 JMF ...
- CentOS安装Git实现多人同步开发
描 述 要开发一个"cms系统",有2个人分别是:晓飞, 盈月.要求使用Git来进行版本控制. 项目信息 版本控制:Git 项目名称:cms 开发人员:xiaofei,yingyu ...
- 查mysql字段中的数字记录
select * from a where nameregexp '^[0-9]+$' ;
- linux查看tomcat版本
进入tomcat bin目录下 然后执行 ./version.sh Server version: Apache Tomcat/6.0.26Server built: March 9 2010 1 ...
- CS小分队第一阶段冲刺站立会议(5月9日)
昨日完成工作:对新子项目进行构思规划 遇到问题:不知道如何将excel表导入C#,对于timer控件不熟悉 今日计划:完成将存在EXCEL表中的名单导入,并进行抽号,熟悉timer控件
- 团队小组开发nabc分析
我们团队开发的项目为:牛逼的手电筒 NABC模型: 1.N:现在每个人几乎走哪,干什么都会拿着手机,而现在年轻人晚上在外面的也不少,所以手机里安装一个手电筒的APP还是很有必要的. 2.A:这学期正在 ...
- boost环境搭建
切换到boost目录下面,使用编译命令>bjam.exe --with-date_time --toolset=msvc-9.0 --build-type=complete stage --wi ...
- [bzoj 3687]简单题 bitset的运用
题意 给定一个正整数集,求所有子集算术和的异或和 题解 每次加入一个元素x,用原集合a xor (a<< x) 然后每一个值统计一下 bitset看起来很优越,是一个能位运算的布尔数组 ...
- 【bzoj1005】[HNOI2008]明明的烦恼
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4175 Solved: 1660[Submit][Stat ...
- delete错误
今天找了半天delete错误,后来才知道是MTd和MDd模式的问题,MTd的内存申请和释放必须在同一个模块里面,接口上面不能使用stl等,MDd可以使用.改成MDd就可以了