TCP(三次握手四次挥手)和UDP

计算机网络的分层

参考文章

  • OSI七层:物理层,数据链路层,网络层,运输层,会话层,表示层,应用层。
  • TCP/IP五层结构:物理层,数据链路层,网络层,传输层,应用层。
  • TCP/IP四层结构:网络接口层,网络层,传输层,应用层。

运输层

作用:在主机之间提供可靠的进程通信。(使用网络层提供的主机数据通信服务)。
地位:是面向通信功能的最高层,和用户功能的最底层,仅存在于用户主机中。

运输层协议和网络层协议的主要区别

ip协议的作用范围:提供主机之间的逻辑通信。
TCP/UDP协议的作用范围:提供进程之间的逻辑通信。

运输层解决的问题:

  • 复用/解复用:区分主机上的不同进程,端口机制。
  • 差错控制:ip仅提供首部校验。
  • 适应不同用户对网络的QOS需求:TCP/UDP。
  • 对用户屏蔽下面的网络细节。

TCP和UDP的区别

  • TCP(全双工 点到点):面向连接;流量控制、差错控制,拥塞控制,定时连接管理;可靠且按照次序交付;不支持多播和广播,开销大;基于字节流,消息的边界在端到端的传输中不能得到保留;传送的数据单位是TCP报文段。
  • UDP:无连接;无拥塞控制;尽最大努力交付;支持多播和广播;保留应用程序的边界,不会合并两个以上的报文,也不会将一个应用报文分成几段;UDP传送的数据单位是UDP用户数据报。

TCP和UDP分别提供的服务

  • TCP:Telnet(端口号:23),FTP(端口号:21),SMTP(端口号:25)
  • UDP:TFTP( 文件传送协议 端口号:69),SNMP(网络管理协议 端口号:161),RIP(路由选择协议 端口号:520)

TCP的可靠传输技术

  • TCP的数据编号与确认
  • TCP的流量控制(点对点之间):利用滑动窗口机制实现流量控制,既可以让接收方来得及接收,也不会发生网络拥塞。
  • TCP的拥塞控制(全局性过程,确保路由器或链路不至于过载):慢开始,拥塞避免,快重传,快恢复。

TCP的建立与释放(三次握手四次挥手)

  • TCP连接的建立:三次握手
    使双方确认对方的存在;允许双方进行参数协商;进行资源的分配。
    1.第一次握手:A的TCP向B发送连接请求的报文段,首部的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x。SYN置1的报文段不能携带数据,但要消耗一个序号。
    2.第二次握手:B如果同意连接,就向A发送连接同意报文,使SYN=1,使ACK=1,其确认号ack=x+1,自己选择的序号seq=y。
    3.第三次握手:A收到报文后向B确认,ACK=1,确认号ack=y+1,seq=x+1。
  • TCP的连接释放:四次挥手
    1.第一次挥手:数据传输结束后,通信双方都可以释放连接。现在假设A想B发送完数据要释放连接,A发送连接释放报文段,并停止再发送数据,主动关闭TCP连接。连接释放报文段的首部FIN=1,其序号seq=u,等待B的确认。
    2.第二次挥手:B发出确认,ack=u+1,序号为seq=v。至此从A到B方向的连接就释放了,TCP处于半关闭状态,但B若要发送数据,A仍然要接收。
    3.第三次挥手:如果B已经没有向A发的数据了,就可以释放连接。FIN=1,序号为w,ack仍为u+1。
    4.第四次挥手:A收到连接释放报文必须发出确认,ACK置1,确认号ack=w+1,序号seq=u+1。

为什么是三次握手和四次挥手?

参考文章
为什么是三次握手而不是两次:为了确保没有失效的请求连接报文被确认的情况,如果A向B发送的连接请求长时间滞留,当A已经没有请求连接时到达了B ,B会认为A想要建立连接,同意了连接请求。这时如果只有两次握手,那么B就开始等待A传送数据了,但是此时A并没有要建立连接不会理会B,那么B就会陷入等待,浪费资源。

为什么是四次挥手:为了确保双方数据都发送完毕,A请求释放连接,只是表明A没有数据要发送给B了,并不代表B没有数据要发给A了,所以B会先发送一个报文表明自己已经知道A想要释放连接,此时TCP处于半关闭状态,等B的所有数据发完了,再向A发送释放连接请求表明自己也可以释放连接了,而此时A给B发送报文表示自己知道B已经发送完所有数据同意断开连接。如果是两次挥手会导致B的数据很可能发送不完整,如果是三次挥手会导致,B的报文万一滞留了,B已经断开了连接,而A还保持半关闭状态等待B的数据,所以最后一次的确认也很重要。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值