赞
踩
TCP报文段=首部+数据
1、端口号:用来标识同一台计算机的不同的应用进程。
[1]源端口:源端口和IP地址的作用是标识报文的返回地址。
[2]目的端口:指明了接收方计算机上的应用程序接口。
TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。
2、序号和确认号:是TCP可靠传输的关键部分。
序号:确保了TCP传输的顺序性,用来标识TCP发端向TCP收端发送的数据字节流。
确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK=1时才有效,也规定连接建立后所有发送的报文的ACK必须为1
3、首部长度:用来表示报文首部的长度,单位是4byte。由于首部可能含有可选项,所以TCP报头的长度是不确定的。
4、保留:为将来定义新的用途保留,现在一般置0,无用处。
5、控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。
[1] URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。(urgent)
[2] ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。(acknowledgement)
[3] PSH:为1时表示当前报文需要进行push操作,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
[4] RST:重置连接标志,重置TCP连接。(reset)
[5] SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,SYN置1就表示这是一个连接接受报文。
[6] FIN:finish标志,用于释放连接,当 FIN = 1时,表明发送方的数据已经发送完毕,并要求断开连接。
6、窗口:窗口值是
7、校验和:检验范围包括首部和数据两部分。TCP校验首部和数据的检验和,目的是检测数据在传输过程中的任何变化。如果收到分片的检验或有差错,TCP将丢弃这个分片,并不确认收到此报文段,最后就会超时重发
8、紧急指针:只有当 URG= 1 时紧急指针才有效。
9、选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。
10、数据部分: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,就会发送不带数据部分的报文。
丢包问题描述
1、TCP协议定义(Transimission Control Protocol)是以一种面向连接的、可靠的、基于字节流的传输层通信协议。
2、TCP是基于不可靠的网路实现可靠传输,肯定会存在丢包问题。
3、如果在通信过程中,发现缺少数据或者丢包,那边么最大的可能性是程序发送过程或者接受过程中出现问题。
假如我有2台服务器a和b。
a服务器发送数据给B服务器频率过高时,b服务器来不及处理,造成数据丢包。(原因可能是程序逻辑问题,多线程同步问题,缓冲区溢出问题)
如果a服务器不控制一下自己的发送频率或者重发数据的话,b服务器收到数据肯定会少,就会造成丢失数据。这种现象,其实本质上来说不是丢包,也不是丢数据,只是因为程序处理有错误,导致有些数据没有成功地被socket发送出去。
丢包问题的解决
窗口值是
定义
在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的,网络的性能就要变坏,这种情况就叫做拥塞。
拥塞控制的标志
拥塞控制与流量控制的区别?? 拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程。 流量控制是点对点通信量的控制,是一个端到端的问题,主要就是抑制发送端发送数据的速率,以便接收端来得及接收。
TCP的四种拥塞控制算法
1.慢开始
2.拥塞避免
3.快重传
4.快恢复
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。