美文网首页
TCP、UDP、Socket

TCP、UDP、Socket

作者: LBJ_f2e4 | 来源:发表于2019-05-31 12:34 被阅读0次
    • TCP:Transmission Control Protocol, 面向连接的,可靠地流协议。实行“顺序控制”或“重发控制”机制。此外还具有“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。TCP 协议能够正确处理丢包问题,保证接收方能够收到数据,与此同时还能够有效利用网络带宽。然而 TCP 协议中定义了很多复杂的规范,因此效率不如 UDP 协议,不适合实时的视频和音频传输。
    • UDP:User Datagram Protocol, 不具有可靠性的数据包协议。虽然可以确保发送消息的大小,却不能保证消息一定会到达。它只会把数据传递给接收端,但是不会关注接收端是否真的收到了数据。但是这种特性反而适合多播,实时的视频和音频传输。因为个别数据包的丢失并不会影响视频和音频的整体效果。
      Socket:套接字
      API:Application Programming Interface,应用编程接口
    1.端口号

    作用:用于区分同一台主机中正在通信的不同应用程序,因此也被称为程序地址。不同的端口用于区分同一台主机上不同的应用程序。假设你打开了两个浏览器,浏览器 A 发出的请求不会被浏览器 B 接收,这就是因为 A 和 B 具有不同的端口。

    分为两种:

    1. 知名端口号:这种端口号是固定的,用于服务器程序,使用对应协议的程序就将端口号设为对应的数字。比如DNS的端口号就是53.
    2. 动态端口号:这种端口号是不固定的,用于客户端程序,客户端程序对端口号要求不高,只要该端口号在本机中唯一就行。

    端口号 协议
    53 DNS
    80 HTTP
    20 FTP数据
    21 FTP控制
    23 SSH
    25 SMTP

    2.TCP与UDP区别:
    TCP:

    用于实现可靠传输的情况,文件非常重要,对网络拥堵有较高要求的情况。


    TCP首部

    源端口号:发送端端口号
    目标端口号:接受端端口号
    序列号:发送数据时,表示发送数据的位置,发送完一次数据后,序列号的值都等于原来的序列号加上数据的长度
    应答号:用于接受端告诉发送端下次应该从哪个位置开始发送,表示前面的数据已经都收到了
    数据偏移:实际就是TCP首部长度
    保留:一般设置为0,用于后续扩展
    控制位:长度为8,从左到右分别是CWR,ECE,URG,ACK,PSH,RST,SYN,FIN
    窗口大小:能够发送数据的最大值,为0时可以发送探测窗口
    校验和:与UDP校验和作用相同
    紧急指针:用于处理紧急情况
    选项:其他控制设置

    UDP:
    1. 用于高速传输和实时性较高的场合(即时通信)。对于采用UDP的实事视频通信,如果出现丢包也只会出现短暂卡顿,但是如果采用TCP丢包后需要重发,会导致很长时间的卡顿。
    2. 包总量较少的通信(DNS),客户端较多
    3. 广播通信


      UDP首部

      源端口号:表示发送端端口号,不需要时设为0
      目标端口号:表示接收端端口号
      包长度:表示整个UDP包的长度
      校验和:为了提供可靠的UDP首部和数据而设计,只要源IP地址,目标IP地址,源端口号,目标端口号,协议号有一个发生了篡改校验和都会不正确。

    相关文章

      网友评论

          本文标题:TCP、UDP、Socket

          本文链接:https://www.haomeiwen.com/subject/xyyfvftx.html