【VS开发】【DSP开发】TCP和UDP数据包结构
TCP (Transport Control Protocol)传输控制协议:
1、TCP数据包的分组格式:
A,源端口:标识源端应用进程。
B, 目的端口:标识目的端应用进程。
C, 序号:在SYN标志未置位时,该字段指示了用户数据区中第一个字节的序号;在SYN标志置位时,该字段指示的是初始发送的序列号。
D,确认号:用来确认本端TCP实体已经接收到的数据,其值表示期待对端发送的下一个字节的序号,实际上告诉对方,在这个序号减1以前的字节已正确接收。
E, 数据偏移:表示以32位字为单位的TCP分组头的总长度,用于确定用户数据区的起始位置。
F, URG:紧急指针字段有效。
G,ACK:确认好有效。
H,PSH:Push操作。TCP分组长度不定,为提高传输速率,往往要收集到足够的数据后才发送。这种方式不适合实时性要求很高的应用,因此,TCP提供“Push”操作,以强迫传输当前的数据,不必等待缓冲区满才传输。
I, RST:连接复位,重新连接。
J, SYN:同步序号,该比特置位表示连接建立分组。
K,FIN:字符串发送完毕,没有其它数据需要发送,该比特置位表示连接确认分组。
L, 窗口:单位是字节,指明该分组的发送端愿意接收的从确认字段中的值开始的字节数量。
M, 校验和:对TCP分组的头部和数据进行校验。
N,紧急指针:指出窗口中紧急数据的位置(从分组序号开始的正向位移,指向紧急数据的最后一个字节),这些紧急数据应优先于其它的数据进行传输。
O,任选项:用于处理一些特殊情况。目前被正式使用的选项字段可用于定义通信过程中的最大分组长度,只能在连接建立时使用。
P, 填充:用于保证任选项为32bit的整数倍。
2、TCP三次握手、四次断开的机制:
三次握手:
第一次握手:客户端发送一个SYN(包含有同步序列号的标志位的数据段和通信请求)给服务器,然后等待服务器的回发确认信息
第二次握手:服务器发送一个SYN-ACK给客户端,确认已经收到客户端发来的信息
第三次握手:客户端接收到服务器发来的确认信息后,再回馈一个ACK给服务器,此时就可与服务器建立可靠的连接
ACK:TCP数据包首部中的确认标志,对已接收到的TCP报文进行确认。
SYN:SYN是TCP/IP建立连接时使用的握手信号。
四次断开:
因为TCP/IP的连接是全双工的,所以每个方向都要单独进行关闭。
每当TCP单方向上的数据传输过后,都会再送一个FIN过去,告诉对方我这方向上的数据将要关闭了,请你做好准备哦。当对方接到FIN后就会通知应用层TCP连接已经终止了这一方向上的数据的传输。发送FIN通常是应用层进行关闭的结果。
第一次:客户端向服务器发送数据后,将FIN置1,告诉它我将要关闭这一方向上的数据连接。
第二次:服务器接受到FIN后,关闭该方向上的数据的连接。将ACK置1,告诉客户端我已经接收到你的信息并以处理。
第三次:向客户端申请反方向上的数据连接的断开。将FIN置1。
第四次:客户端接到服务器发来的申请,将ACK置1,双方同时关闭连接。
UDP(User Datagram Protocol)用户数据报协议:
UDP首部字段由4个部分组成,其中两个是可选的。各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。
3、与TCP包的不同之处:
无需三次握手四次断开,传输速度相对于TCP极快,不确定性,甚至可以不需要应答,没有TCP数据包的安全性,有丢包现象。
UDP数据报格式有首部和数据两个部分。首部很简单,共8字节。包括:
◆源端口(Source Port):2字节,源端口号。
◆目的端口(Destination Port ):2字节,目的端口号。
◆长度(Length):2字节,UDP用户数据报的总长度,以字节为单位。
◆检验和(Checksum):2字节,用于校验UDP数据报的数字段和包含UDP数据报首部的“伪首部”。其校验方法同IP分组首部中的首部校验和。
伪首部,又称为伪包头(Pseudo Header):是指在TCP的分段或UDP的数据报格式中,在数据报首部前面增加源IP地址、目的IP地址、IP分组的协议字段、TCP或UDP数据报的总长度等共12字节,所构成的扩展首部结构。此伪首部是一个临时的结构,它既不向上也不向下传递,仅仅只是为了保证可以校验套接字的正确性。
【VS开发】【DSP开发】TCP和UDP数据包结构的更多相关文章
- [转]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 ...
- TCP/IP各种数据包结构体
下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用...... 以太帧头格式结构体,共14 ...
- 【VS开发】浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)
UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...
- 以太网,IP,TCP,UDP数据包分析【转】
原文地址:http://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html 1.ISO开放系统有以下几层: 7 应用层 6 表示层 5 ...
随机推荐
- Ribbon整合Consul,出现No instances available for XXX 异常
先贴代码: @RestController public class CallHelloController { @Autowired private LoadBalancerClient loadB ...
- 题解 【ZJOI2009】 假期的宿舍
题面 解析 这其实就是个二分图匹配的水题(虽然我还是爆零了) 这题的意思就是说,有x个人,y张床(x,y不确定), 每个人只能睡在指定的几张床上, 问能否使每人都有床睡. 所以,直接二分图匹配,看最大 ...
- 【winfrom-多语言】实现多语言切换:使用资源文件
使用资源文件实现多语言切换. 1. 新建一个Form,名为FrmMain. 在界面添加一个MenuStrip和一个Button. 并设置好控件的文本和位置.(Language=(Default)) 2 ...
- JavaScript赋值运算符
赋值运算符 ⑴ "=" 赋值符号 可以将符号右侧的值赋值给符号左侧的变量 ⑵ "+=" 加等于,是一个运算符 不要分开写 a += 5 等价 ...
- php有哪些cms框架
内容管理系统或CMS是一个用于管理新闻的应用程序,用户可以从后台管理系统发布.编辑和删除文章.HTML 和其他脚本语言不需要操作CMS,尽管使用它们会增加更多优势.无疑php的cms框架是最多的,国内 ...
- java+根据多个url批量下载文件
1.基本流程 当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步: (1)客户端发起一个url请求,获取连接对象. (2)服务器解析url,并且 ...
- 51 Nod 1402 最大值
1402 最大值 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 一个N长的数组s[](注意这里的数组初始下标设为1 ...
- LCA离线Tarjan,树上倍增入门题
离线Tarjian,来个JVxie大佬博客最近公共祖先LCA(Tarjan算法)的思考和算法实现,还有zhouzhendong大佬的LCA算法解析-Tarjan&倍增&RMQ(其实你们 ...
- TensorFlow使用记录 (十四): Multi-task to MNIST + Fashion MNIST
前言 后面工作中有个较重要的 task 是将 YOLOV3 目标检测和 LanNet 车道线检测和到一个网络中训练,特别的是,这两部分数据来自于不同的数据源.这和我之前在 caffe 环境下训练检测整 ...
- Android_(消息提示)多种使用Toast的消息提示
Toast是一种提供给用户简介信息的视图,可以创建和显示消息,该视图以浮于应用程序之上的形式呈现给用户.因为它并不获得焦点,即使用户正在输入什么也不会受到影响. Toast目标是尽可能以不显眼的方式, ...