【无标题】

#! https://zhuanlan.zhihu.com/p/538822467

TCP三次握手协议

在利用TCP实现源主机和目的主机通信时,目的主机必须统一,否则TCP无法建立连接。为了确保TCP连接的成功建立,TCP采用了一种称为三次握手的方式。
三次握手的方式使得"序号/确认号",系统能够正常工作,从而使他们的序号达成同步。如果三次握手成功,则连接建立成功,可以开始传送数据信息。

  1. 源主机A的TCP向目标主机B发送来连接请求报文段,其首部中的SYN(同步)标志位应置为1,表示想跟目标主机B建立连接,进行通信,并发送一个同步序列号x(seq=100)进行同步,表明在后面传送数据时的第一个数据字节的序列号为x+1(即101)
  2. 目标主机B的TCP收到连接请求报文段后,如同意则发回确认,再确认报中应将ACK位和SYN位置置为1,确认号为x+1,同时也为自己选择一个序列号y。
  3. 源主机A的TCP收到目标主机B的确认后,要想目标主机B给出确认,其ACK置为1,确认号为y+1,而自己的序列号为x+1.TCP的标准规定,SYN置为1的报文要消耗掉一个序号。
  • 运行客户进程的源主机A的TCP通知上层应用进程,连接已经建立。当源主机A向目标主机B发送第一个数据报文段时,其序号仍为x+1,因为前一个确认报文段并不消耗序号。
  • 当运行服务进程的目标主机B的TCP收到源主机A的确认后,也通知其上层应用进程,连接已经建立,至此建立了一个全双工的连接。

三次握手:为应用程序提供可靠的通信连接,适合一次传输大批数据的情况,并适合要求得到相应的应用程序。

TCP数据报头

TCP头信息:

  • 源端口、目的端口:16位长,标识出远端和本地的端口号。
  • 序号:32位常,标识发送的数据报的顺序。
  • 确认号:32位常,希望收到的下一个数据报的序列号。
  • TCP头长:4位长,表明TCP头中包含多少个32位字。
  • 6位未用。
  • ACK:ACK位置置为1表明确认号是合法的,如果ACK为0,那么数据报不包含确认信息,确认字段被省略。
  • PSH:表示是带有PUSH标志的数据,接收方因此请求数据报一到便可送往应用程序,而不必等到缓冲区装满时才发送。
  • RST:用于复位由于主机崩溃或其他原因而出现的错误的连接,还可以用于拒绝非法的数据报或拒绝连接请求。
  • SYN:用于建立连接
  • FIN:用于释放连接
  • 窗口大小:16为长,窗口大小字段表示再确认了字节之后还可以发送多少字节。
  • 校验和:16为长,时为了确保高可靠性而设置的,它校验头部、数据和伪TCP头部之和。
  • 可选项:0个或多余32位字,包括最大TCP载荷、窗口比例、选择重复数据报等选项。

UDP协议

它时一种无连接协议。不需要三次握手来建立一个连接。同时,一个UDP应用可同时作为应用的客户或服务器方。
由于UDP协议应不需要建立一个明确的连接,因此建立UDP应用要简单很多。
UDP协议比TCP协议更为高效,也能更好的解决实时性的问题
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。

协议的选择

  1. 对数据可靠性的要求。对数据要求高可靠性的应用需选择TCP协议,如验证、密码字段的传送都是不允许出错的,而对数据的可靠性要求不那么高的应用可以选择UDP传送。
  2. 应用的实时性。TCP协议在传送过程中要使用三次握手、重传确认等手段来保证数据传输的可靠性。使用TCP协议会有较大的时延,因此不适合对实时性要求较高的应用,如VOIP、视频监控等。相反,UDP协议则在这些应用中能发挥很好的作用。
  3. 网络的可靠性。由于TCP协议的提出主要时解决网络的可靠性问题,它通过各种机制来减少错误发生的概率,因此,在网络状况不是很好的情况下需选择TCP协议(如在广域网等情况),但时若在网络状况很好的情况下(如局域网等)就不需要TCP协议,而建议选择UDP协议来减少网络负荷。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值