五、传输层协议TCP/UDP

传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP(User Datagram Protocol)

TCP

TCP是一种面向连接的传输层协议,可提供可靠的传输服务。
在这里插入图片描述

TCP端口号

在这里插入图片描述
端口号用来区分不同的网络服务
0-1023为知名端口号,1024-65535为动态端口号。

TCP头部

在这里插入图片描述
ACK:确认标识位
ACK=1:表明确认序列号有效位,表示该数据包包含确认信息
当ACK=1时,默认其它位(URG、RSH、RST、SYN、FIN)都为0
PSH:通知接收端立即将数据提交给用户进程,不在缓存中停留,等待更多的数据
RST=1:请求重新建立TCP连接
SYN=1:请求建立连接(TCP第一个数据包可以看到SYN=1)
FIN=1:请求断开连接
窗口:指明本地可接收数据的字节数

TCP连接过程

在这里插入图片描述
首先,主机A向服务A请求建立连接,会发送一个TCP的SYN报文,序列号为a,SYN置1.当服务器B收到该报文时,会回复一个SYN、ACK全部置1的报文(ACK=a+1)。当主机A收到该报文时,会朝着服务器A再次发送一个ACK报文,表示连接已经建立起来了。
在这里插入图片描述
在这里插入图片描述
如上图所示,首先主机A向主机B发送SYN报文,主机B收到以后请求11。当主机A收到以后发现B需要的是11,于是向主机B发送seq=11的报文。通过三次握手建立可靠的连接。类似于我们打电话的时候:
我:XXX,我是XX
XXX:你好,我是XXX
我:我要找的就是XXX。
当确认对方的身份以后就可以看是说事了,即传输数据的过程

TCP传输过程

在这里插入图片描述
由于TCP建立的是可靠连接,即主机A向服务器A发送一个报文,服务器A都要进行回复。这样会造成传输速率变慢。所以采用的滑动窗口机制,如上图所示,窗口大小为3,即主机A发送三个报文,服务器A只需要回复一个确认报文。
在这里插入图片描述
当服务器窗口大小显示为1时,即主机A只能向服务器再发送一个报文,否则会丢包。主机通过服务器传输过来的窗口大小来进行流量的控制。
当传输过程中有个包丢掉了(此处假设是101),服务器A向主机A发送报文时,ACK=101,即再次请求seq=101的报文,如没有丢包,服务器A照常发送ACK=104的报文,即104以前的报文都接收正常。

TCP关闭连接

在这里插入图片描述
主机在关闭连接之前,要确认收到来自对方的ACK。
当数据传输成功时,主机A向服务器A发送一个FIN=1的报文,请求断开连接。服务器收到该报文以后回复一个ACK报文,表示OK。同时服务器也会向主机A发送请求断开连接的报文,服务器接收到主机A的回复以后断开TCP连接。即,通过四次挥手断开连接。
类似于我们打电话的时候:
我:XXX,我差不多讲完了,你有什么好补充的吗?
XXX:好像没什么好补充的
XXX:你有事就先挂了吧
我:好,那我挂了
当双方确认传输完成时才可以断开连接。

UDP

UDP是一种面向无连接的传输层协议,传输可靠性没有保证
当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP协议来代替TCP协议在传输层控制数据的转发。
在这里插入图片描述

UDP头部

在这里插入图片描述
UDP头部仅占8字节,传输时没有确认机制,适合实时数据传输,如语音和视频。相比较于TCP,UDP的传输效率更高,开销更小,但是无法保证数据传输的可靠性。

UDP传输过程

在这里插入图片描述
使用UDP传输数据时,应由应用程序根据需要提供报文到达确认、排序和流量控制。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值