第六章 TCP与UDP

TCP与UDP

  • TCP(Transmission Control Protocol):面向有连接的、可靠的流协议
  • UDP(User Datagram Protocol):不具有可靠性的数据报协议
  • 传输协议TCP、UDP通过接收数据中的目标端口号识别目标处理程序(80端口:httpd守护进程)

套接字(Socket)

  • 应用程序利用套接字(API),可以设置对端的IP地址、端口号,并实现数据的发送和接收。

端口号

  • MAC地址:识别统一链路中不同的计算机
  • IP地址:识别TCP/IP网络中互联的主机和路由器
  • 端口号:同一台计算机中进行通信的不同应用程序

通信识别

  • TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信
    1. 源IP地址
    2. 目标IP地址
    3. 协议号
    4. 源端口号
    5. 目标端口号

UDP

特点

  1. 不提供复杂的控制机制,利用IP提供面向无连接的通信服务。
  2. 即使出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络堵塞的行为。
  3. 传输中即使丢包,UDP也不负责重发。

用途

  • 包总量较少的通信(DNS、SNMP等)
  • 视频、音频等多媒体通信(即时通信)
  • 限定于LAN等特定网络中的应用通信
  • 广播通信(广播、多播)

TCP

特点

  1. 充分地实现了数据传输时各种控制功能,在IP这种无连接的网络上也能够实现高可靠性的通信
  2. 可以进行丢包时的重发控制
  3. 可以对顺序乱掉的分包进行顺序控制
  4. 是一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费

可靠性

  • 确认应答 : 在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)
  • 重发控制 : 在一定时间内发送端没有收到确认应答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输。
  • 重复控制 : 在目标主机已经收到数据的情况下,源主机如果重发相同的数据(ACK丢失),这时候目标主机需要识别是否已经接收数据,并对重复的数据进行丢弃处理。
  • 序列号 :按顺序给发送数据的每一个字节都标上号码的编号,通过序列号(字节和字节之间的分隔)实现确认应答,重发控制和重复控制

三次握手,四次挥手

  • 三次握手建立连接 : 发送SYN包作为建立连接的请求,计算MSS值(为收发双方所能接收的较小值),MTU-IP首部长度-TCP首部长度(MTU-40字节)
  • 四次挥手断开连接 : 发送FIN包作为断开连接的请求

在这里插入图片描述

滑动窗口控制

  • 窗口大小 : 无需等待确认应答而可以继续发送数据的最大值
  • 实现 : 使用缓冲区(计算机内存开辟出来的一段空间),缓存窗口大小的数据(比如4个段的数据),在收到接收端的ACK后,根据序列号删除序列号之前的段数据,添加之后要发送的数据。
  • 重发控制 : 发送端主机如果连续3次收到同一个确认应答,就会将其所对应的数据进行重发。

其他传输层协议

  • UDP-Lite : (Lightweight User Datagram Protocol, 轻量级用户数据报协议),扩展UDP机能的一种传输层协议,提供与UDP几乎相同的功能,不过计算校验和的范围可以由应用自行决定。
  • SCTP : (Stream Control Transmission Protocol, 流控制传输协议),与TCP一样,都是对一种提供数据到达与否相关可靠性的检查的传输层协议。在SCTP的情况下,可以管理多个IP地址使其同时进行通信,因此即使出现通信过程当中以太网与无线LAN之间的切换,也能够保持通信不中断。
  • DCCP : (Datagram Congestion Control Protocol, 数据报拥塞控制协议),辅助UDP的传输层协议弥补UDP没有拥塞控制机制的不足。

术语

  • ACK(Positive Acknowledgement): 意指已经接受到
  • NACK(Nactive Acknowledgement): 否定确认应答
  • MSS(Maximum Segment Size): 最大消息长度

猜你喜欢

转载自blog.csdn.net/DMW2016/article/details/82974985