TCP/UDP

网络协议TCP、IPTCP
网络通信协议规定了数据传输格式、传输速率和传输步骤,通信双方遵守协议才能完成数据的交换。
因特网核心协议:TCP和IP
一. TCP,传输控制协议

  • 20字节固定头部长度
  • 连接建立方一定是客户端
  • 连接主动释放方可以是客户端,也可以是服务器端
  • TCP的标志位:SYN,ACK,FIN
    SYN:同步标志位,为1表示正在建立连接;
    ACK:确认标志位;
    FIN:完成标志位
  1. 三次握手
    客户端向服务器发送连接请求,SYN=1,seq=J;
    服务器回复连接确认给客户端SYN=1,ACK=1,ack=J+1,seq=K;
    客户端再次向服务器端发送确认,建立连接ACK=1,ack=K+1。
  • 为什么三次握手?
    如果客户端发送的连接请求在网络较长时延后到达服务器,此时的连接请求已经无效了,如果服务器接收后建立了连接,那客户端根本就不知道这次连接的存在,会造成服务器资源的浪费。
  1. 四次挥手
    客户端数据发送完毕,发送FIN报文,设置序列号u;
    服务器端收到后向客户端回复确认报文,ack=u+1;
    服务器端向客户端发送FIN=N报文段,请求关闭连接,seq=w, ack=u+1;
    客户端收到服务器端的关闭连接请求,回复服务器确认字段ack=w+1,等待 2MSL时间后再断开服务器端连接。
    四次挥手过程
  • 为什么四次挥手?
    因为TCP协议是全双工的,每一个方向连接都需要单独释放。
  • 为什么要等待2MSL?
    MSL是报文最长生存时间。一是为了连接能可靠的关闭。主动关闭发出ACK包后,等待对方接收到,如果对方超时未收到确认包会重发FIN报文,那主动关闭端会再发一个应答包。二保证这次连接的报文在网络消失。如果主动断开端接收到对方FIN报文后直接关闭连接,然后又向服务器提出了连接请求,如果之前滞留在网络中的数据到达了客户端,客户端会认为是新连接的数据,新连接会收到脏数据,导致混乱。
  • 为什么握手只有三次,挥手有四次?
    握手时SYN与ACK可以同时发送,而挥手时,当一方断开后,另一方可能还有数据要发送,因此,不能将对上一个连接的断开的确认与己方的FIN同时发送。
  • 适用场景:安全的数据传输需求,如下载文件,浏览网页。
  • 特点:提供安全无差错的数据传输;
  • 缺点:但是收发双方需要建立连接
  1. UDP
  • 无发送缓冲区,以数据报为单位进行发送,udp原样发送数据,不进行拆分和合并
  • 具有接收缓冲区,但是顺序与发送的udp报文顺序不一定相同,缓冲区满后会丢弃新到来的报文。
  • 能传输数据长度为2^16,超长的数据要在应用层手动分包,多次发送
    基于UDP的应用层协议:NFS、TFTP、DHCP、BOOTP、DNS
  • 应用场景:语音、视频或者流媒体
  • 优点:传输速度快,头部长度仅有8B,有校验
  • 缺点:不可靠,不建立连接,没有确认和重传机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值