zoukankan      html  css  js  c++  java
  • TCP/UDP 三握四挥

    一、TCP和UDP的区别

    TCP全程传输控制协议,UDP名称为用户数据包协议

    1. UDP传送之前不需要建立连接,TCP则是面向连接的服务。

    2. UDP不可靠,TCP通过多种机制保证传输的可靠性

    3. TCP由于可靠传输,具有相当多无法避免的开销,因此效率较UDP低

    4. UDP收到后不需要给出任何确认信息

    5. TCP是两个端点,UDP可以一对多,一对一,多对多

    6. UDP面向报文,而TCP面向字节流

    如何理解第六条:UDP仅仅将上层的报文添加首部,一次发送一条;而TCP仅仅把数据看成一连串无结构的字节流,并不知道字节流的意义。接收方必须能将字节流还原为应用层数据。

    TCP对应的协议包括SMTP,HTTP和FTP等

    UDP包括的协议包括DNS,RIP,DHCP和IGMP等

    二、UDP的结构

    UDP将应用层报文直接添加首部,形成UDP数据报。首部8个字节,源端口,目的端口,长度和检验和各2个字节(有错就丢弃)。

    UDP在计算检验和的时候会添加12个字节的伪首部,并非真正的首部,只是临时添加用于计算检验和。

    三、TCP三次握手

    虽然TCP是面向字节流,但传送的数据单元仍是报文段。

    套接字(Socket) = (IP地址:端口号)

    三次握手图:

    基本情况如图所示,主机A发送SYN = 1, seq = x

    B回复SYN = 1 ACK = 1 seq = y ack = x + 1

    A再次回复ACK = 1 seq = x + 1 ack = y + 1

    为什么需要三次握手?即为何需要第三次的握手?

    防止A发出请求由于网络延迟等原因超时,新的连接已经建立,数据已经发送,该请求才发送到B由于B确认后就可连接,因此对资源造成浪费。

    五、四次挥手

     主机A先发出关闭申请,只需将SYN修改为FIN即可。

    即FIN=1 seq=x 

    ACK=1 seq=y ack=x+1

    FIN=1 ACK=1 seq=z ack=x+1

    ACK=1 seq=x+1 ack=z+1

    为什么关闭连接需要比建立连接多一次?

    留下关闭的时间

  • 相关阅读:
    hdu1716排列2(stl:next_permutation+优先队列)
    iOS UIWebView 载入https 网站出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,
    C++学习笔记23,类内函数重载
    Java---16---多线程---死锁
    Ubuntu上的Hadoop安装教程
    SAP BAPI一览 史上最全
    python脚本从excel表到处数据,生成指定格式的文件
    hdu 4865 Peter's Hobby
    【VUE】100. vue踩坑集锦
    【VUE】2.搭建vue脚手架@vue/cli,新建第一个vue项目
  • 原文地址:https://www.cnblogs.com/lbrs/p/13222061.html
Copyright © 2011-2022 走看看