传输层协议——TCP/UDP连接关键技术点

这可能是你目前能搜索到最详细的tcp udp的介绍了 。笔者再此之前花了很大的功夫但是并未在cdsn上搜到更加详细的介绍

TCP /UDP概述

tcp/udp是一种复杂的传输层协议

TCP(传输控制协议(Transmission Control Protocol))

TCP 连接是一种面向连接的传输层协议,这意味着应用程序在使用tcp协议传输时需要经历一段复杂的连接过程。同时在传输完毕时需要及时释放已经建立的tcp连接,这个过程可以理解为打电话首先进行拨号连接,当你们相对方传达完内容之后,相互告诉对方,可以挂电话了,。这个过程是经过双方确认过 这就是tcp三次握手的简单过程。

1.tcp的服务提供一个可靠的连接,也就是说经过tcp协议传输的文件,可以说是无差错的,不丢失,且按照顺序发送的

2.tcp的连接提供一个全双工的通信,tcp允许双方应用进程在任何时候都能发送数据.tcp两端都设有缓冲区.用来临时存放双向通信的数据。在发送时。在发送时。客户机把自己的数据发送给tcp之后就可以最自己的事情,而tcp也可以在合适的时候把数据发送出去,把数据放在另一端的缓存上,当上层的应用程序进程在合适的时候就会读取缓存中的数据

小总结下

tcp建立的连接安全可靠,但是排队进行,无法保证延迟性,只能保持安全性

UDP(用户数据报协议(User Datagram Protocol))

UDP作为建立在IP数据之上的简单拓展,只增加了很少一部分的功能,就是复用以及分用以及差错检测,这里提到的复用分用以及差错检测,下面我们会提到

1.udp是无连接的,发送数据前不需要经过tcp那样复杂的连接过程(结束时也不需要也没连接可以断开),这样的方式减少了发送和接收数据前的时延以及开销

2.tcp尽最大的努力去交付,即不保证可靠交付。因此主机不需要维持复杂的连接状态,

3.udp是面向报文的发送方的ucp对应用程序交下来的报文,仅仅添加首部就像下交付给网络层,udp对于应用层交付下来的报文,完完全全的整个进行传输,怎么来的就怎么发过去,接收方的udp对于IP层交付的udp数据报文,一次性交付一个完整的这就导致了数据太长的话,IP层无法一次性发送,就得进行分片,就导致效率下降,若是太短。udp交付过后会导致数据报的首部相对过长,也会降低效率

4.udp没有拥塞检测,因此网络中出现了堵塞并不会影响主机发送的频率,这些对实时应用很重要,他们允许掉一些包,但是要保证时延性,例如微信电话,王者荣耀等等

5.udp支持一对一  一对多 多对一 以及多对多 的相互通信

6.udp首部开销小 仅有8字节,相对于tcp20字节的首部能节省不少资源·

解释

1.IP层的数据包在传输过程中会被路由器进行转发。每经过一个路由器会进行一次数据包的解析和重组,如果IP首部过长,会导致每经过一个路由器会需要消耗更多的时间和处理资源进行解析和重组,从而导致传输效率下降

2.IP层的数据会被分片.如果IP首部过长,就会导致每个分片中包含更多的首部信息,导致存储的数据量减少,从而需要更多的分片完成数据传输,无论是重组还是解析,都会导致传输效率下降

连接方式

TCP三次握手 四次挥手

三次握手

e9449d5c5a92433dbe801c2757eddc46.webp

TCP三次握手(Three-Way Handshake)是在TCP连接建立过程中使用的一种协议。其目的是确保双方的通信双方都能够正常工作并且可以相互理解。

第一次握手(SYN):客户端向服务器发送一个SYN包,其中包含了客户端的初始序列号和请求建立连接的意图。

第二次握手(SYN + ACK):服务器接收到客户端发送的SYN包后,向客户端发送一个确认包(ACK),其中包含了服务器的初始序列号和对客户端的请求连接的确认。

第三次握手(ACK):客户端接收到服务器发送的确认包后,再向服务器发送一个确认包,表示客户端已经收到了服务器的回应。

三次握手完成后,双方都知道对方的序列号,并且建立了可靠的双向通信。

四次挥手

TCP四次挥手是指在TCP连接的关闭过程中,双方通信结束时的一系列步骤。具体的四次挥手过

如下:

59f2feb206b2455b988f3eb004e7ce0e.webp

1. 主动关闭方(一方)发送一个FIN报文给被动关闭方(另一方),表示自己已经没有数据要发送给对方了,希望关闭连接。

2. 被动关闭方收到FIN报文后,发送一个ACK报文给主动关闭方,确认收到了关闭请求。

3. 被动关闭方关闭其发送功能,继续接收数据直到收到主动关闭方发送的数据的ACK。

4. 主动关闭方收到ACK后,发送一个FIN报文给被动关闭方,表示自己也准备关闭连接。被动关闭方收到FIN后,发送一个ACK报文给主动关闭方,确认收到了关闭请求。

完成以上四次挥手过程后,TCP连接被彻底关闭,双方不再进行通信。

UDP中的套接字

UDP套接字是一种通信协议,它使用数据报来发送和接收数据,它不像TCP套接字那样提供可靠的数据传输和流量控制,但是具有快速的传输速度和简单的编程模型。UDP套接字通常用于需要高性能和低延迟的应用程序,例如在线游戏、视频流媒体和VoIP通话等。

UDP套接字采用无连接通信模式,也就是说发送方发送数据时不需要与接收方建立连接,只需要指定目标地址和端口号即可。由于没有连接建立过程和状态维护,所以UDP套接字具有很高的传输效率,但是由于没有可靠性保证,所以在网络传输过程中可能会丢失部分数据报。

在使用UDP套接字时,需要通过创建套接字、绑定地址和端口号、发送数据和接收数据等步骤来完成数据传输。同时也可以通过设置超时时间、多路复用等方式来增加UDP套接字的稳定性和可靠性。

UDP特点

Udp的不可靠连接

连接过程

UDP连接是一种无连接的通信协议,相对于TCP协议来说,UDP的连接过程比较简单。具体来说,UDP连接过程分为以下几个步骤:

  1. 创建UDP套接字:在客户端和服务器端分别创建一个UDP套接字,用于数据传输。
  2. 绑定端口:在服务器端上,需要将UDP套接字与一个特定的端口号绑定,以便客户端能够发送数据到该端口。
  3. 发送数据:客户端向服务器端发送数据时,需要指定服务器的IP地址和端口号。
  4. 接收数据:服务器端通过其绑定的端口号来接收客户端发送的数据。

需要注意的是,由于UDP是无连接的协议,因此在连接过程中不会进行类似于TCP协议中的三次握手等操作。此外,在UDP连接中,由于数据包的顺序可能会发生改变、丢失或重复,因此需要应用层自己处理数据包的顺序和重复情况。

应用场景

TCP和UDP分别是传输层协议中的两种不同类型的协议,它们在应用场景上有不同的特点和使用方式。

TCP(传输控制协议)常用于需要可靠传输的应用场景,例如:

1. 网页浏览:在浏览网页时,TCP协议用于确保网页的可靠传输,保证页面的完整性和准确性。

2. 文件传输:TCP协议支持可靠的文件传输,可以确保文件的完整性,避免数据丢失或错误。

3. 电子邮件:TCP协议用于电子邮件的传输,确保邮件的准确传递,避免数据丢失或错误。

4. 远程登录:TCP协议支持远程登录,例如Telnet和SSH,可以确保用户操作的可靠传输,避免命令的丢失或错误。

UDP(用户数据报协议)常用于需要快速传输和实时性较强的应用场景,例如:

1. 实时流媒体:UDP协议可以用于实时流媒体的传输,例如音频和视频的传输,在这种场景下,实时性比可靠性更重要。

2. 视频游戏:UDP协议常用于多人在线游戏中,因为游戏需要快速传输和实时响应,且可以容忍一些数据丢失。

3. DNS:UDP协议用于域名系统(DNS)的查询,由于DNS查询通常是短暂的,且实时性要求较高,因此使用UDP协议更为合适。

需要注意的是,TCP和UDP并不是绝对的,上述的应用场景只是一种常见的标准,实际使用时可以根据具体需求选择合适的协议。

总结

TCP(传输控制协议(Transmission Control Protocol))

TCP(传输控制协议)是一种可靠的、面向连接的网络协议,而三次握手是TCP用于建立连接的一种过程。

以下是TCP和三次握手之间的相似之处:

  1. 信道建立:TCP使用三次握手过程来建立连接,发送方和接收方之间的通信必须先建立一个连接。这能够确保双方都能够正确地收发数据。

  2. 双向确认:在TCP的三次握手和数据传输过程中,双方都需要发送和接收确认消息。这样可以确保每个数据包在传输时都能够被正确接收,从而保证数据的可靠性。

  3. 可靠性:TCP使用三次握手来建立连接,这样可以确保双方都能够正确地收发数据。同样,TCP也使用确认和重传机制来保证数据的可靠传输,确保每个数据包都能够被正确接收。

  4. 完整性:TCP使用三次握手来建立连接时,双方都需要发送和接收确认消息。这样可以确保双方都已经成功建立连接,并且可以开始传输数据。

总之,TCP和三次握手之间的相似之处在于它们都用于建立可靠的连接,并使用确认和重传机制来保证数据的可靠传输。

UDP(用户数据报协议(User Datagram Protocol))

UDP(User Datagram Protocol)是一种面向无连接的传输层协议,它提供了一种简单的传输机制,用于将数据包从一个应用程序发送到另一个应用程序。以下是对UDP连接的总结:

  1. 无连接性:UDP是一种无连接的协议,不需要在通信之前建立连接。每个UDP数据包都是独立的,没有相关性。

  2. 高效性:相对于TCP来说,UDP的开销较小。由于没有建立连接的过程,UDP在传输数据时更加高效。

  3. 不可靠性:UDP是一种不可靠的协议,它没有提供可靠的传输保证。数据包可能会因为网络拥塞、丢包或乱序等原因而丢失。

  4. 无拥塞控制:UDP不提供拥塞控制机制,这意味着发送方可能会以高速发送数据,导致网络拥塞。

  5. 适用于实时应用:由于UDP的高效性和低延迟,它常用于实时应用程序,如音频、视频和游戏等。

  6. 简单性:UDP的头部较短,包含源端口号、目的端口号、数据长度和校验和等信息,相对简单。

  7. 不支持流量控制:UDP不支持流量控制,这意味着发送方无法控制数据传输速度。应用程序需要自己实现流量控制机制。

总的来说,UDP适用于对延迟要求较高的实时应用,如音频和视频传输等。然而,由于其不可靠性和缺乏拥塞控制机制,应用程序需要自己实现这些功能,以保证数据传输的可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大懒的猫猫虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值