12.2. TCP 与 UDP
UDP 是用户数据报协议,是一个简单的面向数据报的运输层协议。
- 网络层:IP 协议、ICMP 协议、ARP 协议、RARP 协议和 BOOTP 协议;
- 传输层:TCP 协议与 UDP 协议;
- 应用层:FTP、HTTP、TELNET、SMTP、DNS 等协议;
TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。
TCP 和 UDP 的区别:
- TCP 面向连接的运输层协议,UDP 无连接
- TCP 是可靠交付,UDP 是尽最大努力交付
- TCP 面向字节流,UDP 面向报文
- TCP 是点对点连接的,UDP 一对一,一对多,多对多都可以
- TCP 适合用于网页,邮件等,UDP 适合用于视频,语音广播等
HTTP 是应用层协议,其传输都是被包装成 TCP 协议传输。可以用 SOCKET 实现 HTTP。
Socket 是一组接口,可以实现 TCP,也可以实现 UDP。在设计模式中,Socket其实就是一个门面模式,它把复杂的 TCP/UDP 协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。
- TCP 传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个 TCP 连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 理想状态下,TCP 连接一旦建立,在通信双方中的任何一方主动关闭连接前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开 TCP 连接的请求。
- UDP 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP 不提供可靠性,它只是把应用程序传给IP层的数据包发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据包前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
- TCP 连接的三次握手:要了解 TCP,一定要知道 "三次握手,四次拜拜"所谓的三次握手,就是发送数据前必须建立的连接叫三次握手,握手完了才开始发的,这也就是面向连接的意思。
- 第一次握手:客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;
- 第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论