tcp 和 udp

网络的五层模型

对网络协议的划分有很多种,有七层的,有四层的,然而最普遍和最好理解的是网络协议的五层模型,它们分别是:

  • 物理层:就是把电脑连接起来的屋里手段。他主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
  • 数据链路层:
    • 数据链路层为网络层提供可靠的数据传输
    • 基本数据单位为帧
    • 主要的协议:以太网协议
    • 两个重要设备名称:网桥和交换机
  • 网络层
    • 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能
    • 基本数据单位为 ip 数据包
    • 包含主要协议:ip 协议,ICMP 协议,ARP 协议
    • RARP 协议
    • 主要的设备:路由器
  • 传输层
    • 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题
    • 包含主要协议:tcp 和 udp
    • 重要设备:网关
  • 引用层
    • 数据传输基本单位为报文
    • 包含的主要协议:FTP,Telent,DNS,SMTP,POP3 协议,HTTP 协议

TCP 和 UDP 的区别

UDP 和 TCP 的主要区别在于 UDP 不一定提供可靠的传输。UDP 协议不能保证数据确保无误到达目的地。UDP 在许多方面非诚有效。当某个程序的目标是尽快地传输尽可能的信息时(其中任意给定数据的重要性相对较低),可使用 UDP。ICQ 短信息使用 UDP 协议发送消息。

TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。

TCP 的三次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

TCP 三次握手

第一次握手

客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第一次握手

第二次握手

服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1:即X+1。

第二次握手

第三次握手

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1。并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1。

第三次握手

TCP 四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

四次挥手

坚持原创技术分享,您的支持将鼓励我继续创作!