TCP和UDP

本文详细介绍了计算机网络的七层协议,包括物理层、数据链路层、网络层、运输层(TCP和UDP)、会话层、表示层和应用层。重点比较了TCP的面向连接、可靠传输与UDP的无连接、不可靠传输特点,并阐述了TCP的三次握手和四次挥手过程。
摘要由CSDN通过智能技术生成

计算机网络的七层协议

计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。

七层协议的功能:

物理层:

负责处理网络通信的物理传输和传输介质的细节。物理层的主要任务是将比特流(bitstream)从发送方传输到接收方,确保数据能够在网络中进行可靠的物理传输。

数据链路层:

数据链路层通常简称为链路层。将网络层传下来的IP数据包组装成帧,并再相邻节点的链路上传送帧。

网络层:

主要负责实现不同网络之间的数据传输,包括路由选择、分组传输和逻辑地址寻址等功能。

运输层:

有时也译为传输层,向主机进程提供通用的数据传输服务。该层主要有以下两种协议:

  • TCP:提供面向连接的、可靠的数据传输服务;
  • UDP:提供无连接的、尽最大努力的数据传输服务,但不保证数据传输的可靠性。

会话层:

负责在网络中的两节点之间建立、维持和终止通信,如服务器验证用户登录便是由会话层完成的。

表示层:

主要负责数据格式的转换,如加密解密、转换翻译、压缩解压缩等。

应用层:

为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。

TCP和UDP

区别

总结

TCP是一种面向连接的可靠传输协议。它提供了可靠的数据传输和错误检测机制,确保数据的完整性和顺序性。TCP使用三次握手建立连接,通过序列号、确认应答和重传机制来保证数据的可靠传输。TCP还具有拥塞控制和流量控制的功能,以适应不同网络条件和流量负载。由于TCP的可靠性和复杂性,它在需要可靠数据传输的应用中广泛使用,如文件传输、电子邮件和网页浏览等。


UDP是一种无连接的不可靠传输协议。它不提供可靠性和错误检测机制,数据传输过程中无需建立连接和维护状态。UDP直接将数据报发送到目标地址,不保证数据的顺序和完整性。UDP的优点是简单、高效,适用于一些实时性要求高、数据丢失可以容忍的应用,如音频和视频流媒体、实时游戏和DNS(域名系统)等。

TCP

三次握手:

第一次握手:

客户端向服务端发送一个SYN=1(同步报文),并进入SYN_SENT状态,等待服务器确认。

SYN标志位被设置为1,表示这是一个建立连接的请求。SYN包还包含了一些其他的信息,如源端口、目的端口和初始序列号等。 

第二次握手:

服务端收到连接请求报文后,如果同意建立连接,则向客户端发送同步确认报文(SYN=1,ACK=1),确认号为 ack = x + 1,同时选择一个随机数 seq = y 作为初始序列号,此时服务器进入SYN_RECV状态。

第三次握手:

客户端收到服务端的确认后,向服务端发送一个确认报文(ACK=1),确认号为 ack = y + 1,序列号为 seq = x + 1,客户端和服务器进入ESTABLISHED状态,完成三次握手。

为什么不是两次握手

防止已过期的连接请求报文突然又传送到服务器,因而产生错误和资源浪费。

当客户端向服务端发送一个SYN后,由于网络阻塞或者其他原因导致服务端没有接收到SYN包。客户端为了建立连接会再发送一个SYN,服务端接收到第二个SYN后,向客户端发送SYN+ACK,结果第一个SYN又发送到服务端,服务端会误认为客户端发送了第二个连接请求进入连接等待状态,造成了状态不一致问题。

数据传输

TCP为每一个连接建立一个缓冲区

  1. 发送端发送数据时会从缓冲区截取一部分发送内容,并且会附带序列号和长度。
  2. 接收端接收到数据后会回复序列号+长度,也就是下一包数据的起始序列号。
  3. 接收端可以根据序列号进行数据的重组,当出现丢包时,接收端可以重新发送请求。

数据传输不分客户端和服务端,TCP连接是全双工的,对于两端均采用上述机制。

四次挥手

第一次挥手:

客户端向服务端发送FIN关闭连接请求后进入终止等待1状态。

第二次挥手:

服务端收到FIN包后向客户端发送ACK包表示自己进入关闭等待状态,客户端进入终止等待2状态。

第三次挥手:

此时服务端可以继续发送未发送的数据,客户端也可以接收数据。数据发送完毕后服务端向客户端发送FIN包进入最后确认状态。

第四次挥手:

客户端收到FIN包后向服务端发送一个ACK包,然后进入超时等待状态,服务端收到ACK包后立即关闭连接。

为什么要进入超时等待

因为要保证客户端收到ACK包,如果客户端发送ACK包后立即关闭连接,当ACK包在网络中丢失时会导致服务端一直处在等待关闭状态。

当客户端处于超时等待状态,如果服务端没有收到ACK包会再次向客户端发送FIN包,客户端会再次发送ACK包并刷新超时等待时间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值