日志(2022.3.14---TCP和UDP的区别TCP三次握手四次挥手)

今天主要学习了TCP和UDP的相关内容(本篇我觉得挺重要,日后要多拿出来看)。

首先TCP和UDP都在传输层,目的都是为了在程序之间传递数据。

TCP是面向连接的,可靠的,而UDP是无连接的,不可靠的(即不需要建立连接,发送端也不知道数据是否正确传送到接收端)。

TCP仅支持一对一,用于查看邮件,网页等,UDP支持一对多,多对多,如视频,电话。

TCP传输慢,头部有20个字节,有确认号,表示是否确认收到消息;还有头长度,头的长度;预留位,控制位,控制每个状态;UDP,传输很快,头部只有8个字节,包含了两个十六位的端口号(源端口和目标端口);整个数据报文的长度;整个数据报文的检验和(用于发现头部信息和数据中的错误)。

TCP是如何建立连接的?

TCP建立连接进行了三次传输,即三次握手;过程如下:客户端会先发一SYN包数据请求连接,询问是否能建立连接,如果服务端同意连接,就会回复一个SYN+ACK包;客户端收到之后,会再发送一个ACK包给服务端,表示收到服务端的确认包。此时连接全部完成。

为什么要三次握手?

因为网络信道是不可靠的,如果是二次握手就完成的话,当客户端第一次发送SYN包时,可能会因为网络原因导致延迟,此时客户端会再次发送一个包给服务端,服务端同意连接后,会回复SYN+ACK包给客户端,等第一个SYN包到达服务端的时候,服务端会认为客户端又发送了一次连接请求,此时服务端会再次回复一个SYN+ACK包,从而等待客户端发送数据,此时会造成服务端的资源浪费。 其本质就是为了解决网络信道不可靠的问题。为了在不可靠的信道上建立可靠的连接。

TCP在如何传输数据?即如何解决丢包,顺序的问题?

TCP为每个连接都建立了一个缓冲区,建立连接的第一个字节序列号为0,后面依次增加1,在发送数据的时候,会在缓冲区取一部分数据组成发送报文,在tcp协议头上会附带序列号和长度。

        之后接收端接收到数据之后,会回复确认报文:ACK=序列号+长度,即下次起始的序列号。这边可以解决丢包顺序的问题。

        这部分感觉网上大部分都说的不是很清晰,所以打算明天把计算机网络书拿出来在好好研究一番。

TCP在连接之后如果关闭连接?

        要进行四次传递,其实就是通常所说的四次挥手。

        客户端主动向服务端关闭连接,客户端向服务端发送一个FIN包,表示关闭连接,自己禁止终止等待状态;此时服务端收到FIN包,发送一个ACK包,表示自己进入了关闭等待状态,客户端进入终止等待2状态;此时服务端还可以发送数据,当发送完数据之后,服务端向客户端发送一个FIN包,自己进入最后确认状态 ;客户端收到之后会回复一个ACK包,并进入超时等待状态,经过超时时间后关闭连接(超时时间是为了保证对方已经收到了ACK包,倘若立即关闭,当ACK包丢失了,此时服务端会一直在最后确认状态,有了这个之后,如果ACK包丢失,超时时间到了之后,则服务端会重新发送一个FIN包,客户端响应之后会重发ACK包,并刷新响应时间),服务端收到后,立即关闭。 

也是为了保证在不可靠的网络链路中,进行可靠的连接断开。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值