Web阶段——TCP/UDP区别

2018-09-25

TCP:

全称:Transmission Control Protocol(传输控制协议),是工作在OSI七层模型(Open System Interconnect,开放式系统互联)中的传输层,是一种面向连接的、可靠的、基于字节流的通信协议。
  TCP层将应用层的数据流分成报文段,再继续向网络层传输。为了数据传输的可靠性,TCP层将每个报文段进行了编号,用来保证接收端数据的我完整性。
  TCP层每传输一个报文段,就向接收端发送一次确认信息。在一定时间内,如果接收端没有返回确认信息,发送端将重新发送丢失的报文。

UDP:

全称:User Datagram Protocol(用户数据报协议),与TCP一样工作在传输层,是一种面向无连接的、不可靠的通信协议。
  UDP仅将应用层的数据流分成报文直接进行传输,不进行排序。数据安全没有保障,但操作效率高,适合普通数据传输(QQ)。

TCP连接的三次握手:

tcp连接三次握手.jpg

连接时:
  1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。
  2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。
  3. .客户端接收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号y+1和序号x+1的ACK报文,一个标准的TCP连接完成。

#TCP断开连接四次挥手过程:


tcp断开连接四次挥手.jpg

1. Client端发起中断连接请求,也就是发送FIN报文。
  2. Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。
  3. 这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。
  4. Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!


本文来自 tensorzhl 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/tensorzhl/article/details/75797364?utm_source=copy

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 传输层提供的服务 传输层的功能 从通信和信息处理的角度看 ,传输层向它上面的应用层提供通信服务,它属于面向通信部分...
    CodeKing2017阅读 9,024评论 1 9
  • 转自原文:TCP、UDP以及TCP滑窗,它们的区别注:文中提到TCP传输过程的特点,以及“粘包”的原因和解决方案,...
    半岛夏天阅读 8,875评论 2 31
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 8,838评论 0 6
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,468评论 6 174
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 7,206评论 0 2