TCP、UDP总结

作者: b6cd76971b2d | 来源:发表于2019-02-12 15:18 被阅读4次

TCP

概念

  • 传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • TCP/IP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议。

  • TCP/IP协议集包括应用层,传输层,网络层,网络访问层。

各层协议

image

图是找来的,可能不全。

应用层

  • 超文本传输协议(HTTP):万维网的基本协议;
  • 文件传输(TFTP简单文件传输协议);
  • 远程登录(Telnet),提供远程访问其它主机功能, 它允许用户登录internet主机,并在这台主机上执行命令;
  • 网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法, 以及配置管理,统计信息收集,性能管理及安全管理等;
  • 域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址。

还有许多可自行百度。

传输层

  • TCP
  • UDP

网络层

  • Internet协议(IP)
  • Internet控制信息协议(ICMP)
  • 地址解析协议(ARP)
  • 反向地址解析协议(RARP)

上面我们知道整个架构,所以入门的小白别再搞混了TCP,HTTP。

TCP连接之三次握手,四次挥手

上图

image
  • SYN: 同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。SYN这个标志位只有在TCP建立连接时才会被置1 ,握手完成后SYN标志位被置0。

  • ACK: ACK (Acknowledgement)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。接收到通信,置为1。

  • FIN: 一端传输完毕时,将FIN 置为1,提出停止TCP请求。

注意: 挥手时,客户端先进行FIN,服务端会返回ACK,但并不代表数据传输完成,服务端还可以进行传输数据,直到服务端返回FIN,客户端返回ACK,连接中断(此过程可以相反,由服务端先发起FIN)

知道了连接过程,想必一定有状态在里面

上图


image

直接看是很难理解,所以左思右想,还是按流程走,最让人清晰

注:(S:服务端存在的状态,C:客户端存在的状态,S&C表示都存在的状态)

三次握手状态变化

  • LISTEN (S): 服务器等待从任意远程TCP端口的连接请求。侦听状态。
  • SYN-SENT (C):客户在发送连接请求后等待匹配的连接请求。通过connect()函数向服务器发出一个同步(SYNC)信号后进入此状态。(如图:客户端发送SYN)
  • SYN-RECEIVED (S):服务器已经收到并发送同步(SYNC)信号之后等待确认(ACK)请求。(如图:服务端收到SYN,发送SYN+ACK ,等待客户端ACK状态)

握手成功,互发数据

  • ESTABLISHED (S&C):服务器与客户的连接已经打开,收到的数据可以发送给用户。数据传输步骤的正常情况。此时连接两端是平等的。这称作全连接。

四次挥手(客户端和服务端都可能是主动关闭或者被动关闭)

  • FIN-WAIT-1 (S&C):(服务器或客户)主动关闭端调用close()函数发出FIN请求包,表示本方的数据发送全部结束,等待TCP连接另一端的ACK确认包或FIN&ACK请求包。(如图:客户端发送FIN,等待服务端ACK状态)
  • CLOSE-WAIT (S&C):被动关闭端接到FIN后,就发出ACK以回应FIN请求,并进入等待本地用户的连接终止请求的半关闭状态。这时可以发送数据,但不再接收数据。(如图:服务端收到FIN并发送ACK之后,继续发送数据的状态)
  • FIN-WAIT-2 (S&C):主动关闭端在FIN-WAIT-1状态下收到ACK确认包,进入等待远程TCP的连接终止请求的半关闭状态。这时可以接收数据,但不再发送数据。(如图:接收到服务端ACK之后,等待服务端FIN请求状态)
  • CLOSING (S&C):在发出FIN后,又收到对方发来的FIN后,进入等待对方对己方的连接终止(FIN)的确认(ACK)的状态。少见。
  • LAST-ACK (S&C):被动关闭端全部数据发送完成之后,向主动关闭端发送FIN,进入等待确认包的状态。(如图:服务器数据发送完成,向客户端发送FIN)
  • TIME-WAIT (S/C):主动关闭端接收到FIN后,就发送ACK包,等待足够时间以确保被动关闭端收到了终止请求的确认包。【按照RFC 793,一个连接可以在TIME-WAIT保证最大四分钟,即最大分段寿命(maximum segment lifetime)的2倍】(如图:客户端收到FIN,响应ACK给服务端,等待服务端接收到ACK)
  • CLOSED (S&C):完全没有连接。

UDP

概念

  • 用户数据包协议(英语:User Datagram Protocol,缩写:UDP),又称用户数据包协议,是一个简单的面向数据报的传输层协议。
  • UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
  • UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
  • 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、 源端和终端主机性能的限制。
  • 由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。 因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
  • UDP是面向报文的。发送方的UDP对应用程序交下来的报文, 在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界, 因此,应用程序需要选择合适的报文大小。

TCP与UDP的区别

  1. 基于连接与无连接;

  2. 对系统资源的要求(TCP较多,UDP少);

  3. UDP程序结构较简单;

  4. 流模式与数据报模式 ;

  5. TCP保证数据正确性,UDP可能丢包;

  6. TCP保证数据顺序,UDP不保证。

欢迎关注

欢迎关注公众号“码上开发”,每天分享最新技术资讯

image

相关文章

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • TCP和UDP总结(区别、优缺点、应用实例)

    TCP和UDP的区别和优缺点以及应用实例 TCP和UDP区别总结: TCP面向连接,UDP是无连接的TCP在开始数...

  • Netty知识汇总

    1、TCP、UDP的区别? TCP与UDP区别总结: 1)、TCP面向连接(如打电话要先拨号建立连接);UDP是无...

  • TCP和UDP的区别

    TCP与UDP区别总结: TCP面向连接。UDP是无连接的,即发送数据之前不需要建立连接。 TCP提供可靠的服务。...

  • TCP vs UDP

    简单总结TCP与UDP的区别。 I、TCP与UDP基本区别 II、应用场景 对于TCP协议,在要求可靠性高的场景下...

  • TCP和UDP的区别和优缺点

    1、TCP与UDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需...

  • TCP和UDP的区别和优缺点(转)

    1、TCP与UDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需...

  • TCP和UDP的区别及其优缺点

    1、TCP与UDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需...

  • iOS 网络相关面试题

    问题:TCP、UDP TCP/UDP 传输层协议 ||—— UDP:用户数据报协议 TCP与UDP的区别: 问题...

  • TCP 与 UDP

    TCP 与 UDP(主要说TCP)TCP/UDP端口号TCP/UDP端口号TCP连接的建立TCP连接的建立发送se...

网友评论

    本文标题:TCP、UDP总结

    本文链接:https://www.haomeiwen.com/subject/fxrkeqtx.html