TCP/UDP的简单理解

一、OSI七层模型和TCP/IP四层模型 


 

OSI 七层模型

        七层模型指的是OSI参考模型,也称为开放式系统互联通信参考模型,是网络通信的标准框架。它是一个由国际标准化组织(ISO)制定的网络通信协议的体系结构,被用于描述计算机或网络设备在网络中互相通信的过程。该模型被划分为七个层次,每一层都有特定的功能和协议。

  1. 物理层(Physical layer):这一层负责处理物理信号的传输和接收,包括电气、光学、机械等方面。
  2. 数据链路层(Data Link layer):这一层负责处理数据的传输和接收,包括错误检测和校正等操作。
  3. 网络层(Network layer):这一层负责处理数据在网络中的路由和寻址。
  4. 传输层(Transport layer):这一层负责建立和维护应用程序之间的通信连接。
  5. 会话层(Session layer):这一层负责管理不同应用程序之间的对话和数据交换。
  6. 表示层(Presentation layer):这一层负责处理数据表示和编码等问题,使得不同计算机和网络设备之间能够解释和识别一致的数据格式。
  7. 应用层(Application layer):这一层负责处理网络应用程序和用户之间的交互,包括文件传输、电子邮件、网页浏览等应用。

TCP/IP四层模型 

        由于TCP,UDP,IP协议的普及,实际使用中一般使用四层模型。相对于七层模型,四层模型将OSI模型的会话层、表示层与应用层合并为一个应用层,简化了协议栈的层次结构。同时也可以看到,四层模型中IP和TCP/UDP协议的功能被分别独立出来,使得网络协议的设计和管理更加灵活和简单。

  1. 网络接口层(Network Interface layer):该层主要处理物理层和数据链路层的功能。
  2. 网络层(Internet层):该层负责处理数据在网络中的路由和寻址,实现IP地址的分配和转发。
  3. 传输层(Transport层):该层主要负责建立、维护和终止应用程序之间的连接,实现端口号的分配和管理。
  4. 应用层(Application层):该层负责处理网络应用程序和用户之间的交互,包括文件传输、电子邮件、网页浏览等应用。

常见协议

1. 网络接口层

  • Ethernet(以太网)
  • Wi-Fi
  • 局域网(LAN)技术,如Token Ring、FDDI等

2. 网络层

  • IP(Internet Protocol)
  • ICMP(Internet Control Message Protocol)
  • ARP(Address Resolution Protocol)
  • RARP(Reverse Address Resolution Protocol)

3. 传输层

  • TCP(Transmission Control Protocol)
  • UDP(User Datagram Protocol)

4. 应用层

  • HTTP(Hypertext Transfer Protocol)
  • FTP(File Transfer Protocol)
  • SMTP(Simple Mail Transfer Protocol)
  • DNS(Domain Name System)
  • DHCP(Dynamic Host Configuration Protocol)
  • Telnet(远程登录协议)
  • SSH(Secure Shell)

二、三次握手和四次挥手


三次握手

 

        三次握手是TCP/IP协议中建立可靠连接的过程。完成了三次握手后,TCP连接就建立起来了。这个过程中,每一次握手的目的都是为了确认对方的能力和意愿,确保连接的可靠性和正确性。

第一次握手:

  • 客户端先向服务器发送一个同步数据包(报文段)。
  • 数据包的 TCP 首部内容:同步 SYN=1 ,确认 ACK=0 ,序号 seq=x
  • 根据 TCP 首部内容,表示这是一个请求建立连接的数据包,其中 seq=x 为所传 送数据的第一个字节的序号。

第二次握手:

  • 服务器收到客户端发送的第一个数据包后,根据 SYN=1 与 ACK=0 ,判断出为主动建立连接的数据包。
  • 若服务器同意连接,则服务器发送一个数据包进行回应。
  • 数据包的TCP首部内容:同步SYN=1,确认ACK=1,序号seq=y,确认号 ack=x+1 确认 ACK=1 ,代表服务器同意连接; 

第三次握手:

  • 客户端收到服务器的确认之后,再给服务器发送一个数据包。
  • 数据包的TCP首部内容:同步SYN=0,确认ACK=1,序号seq=x+1,确认号 ack=y+1

四次挥手

        四次挥手是TCP/IP协议中关闭连接的过程。完成了四次挥手后,TCP连接就彻底关闭了。这个过程中,每一次挥手的目的都是为了确认对方的能力和意愿,确保数据传输的完整性和可靠性。

第一次挥手:

  • 首先客户端向服务器发送连接释放的请求报文(数据包),并停止发送数据。
  • 在连接释放报文(数据包)的TCP首部中:终止FIN=1,确认ACK = 0

第二次挥手:

  • 服务器收到连接释放的报文之后,给客户端发送确认报文。从客户端到服务器这个方向上的连接就释放了,TCP连接处于半关闭状态。此时客户端无法发送数据给服务器,但是服务器还可以发送数据给客户端,客户端仍可以接收。
  • 在服务器发送给客户端确认报文的TCP首部中:终止FIN=0,确认ACK=1,序号位seq=v,确认号ack=u+1

第三次挥手:

  • 若服务器已经没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文。
  • 在确认报文的TCP首部中:确认ACK=1,终止FIN=1

第四次挥手:

  • 客户端收到服务器的连接释放报文段后,向服务器发出确认报文。
  • 在确认报文的TCP首部中:确认ACK=1,终止FIN = 0

三、流量控制


         流量控制是为了控制发送方发送速率,保证接收方来得及接受。

        TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示(滑动窗口协议)发送端发送的速率,防止丢包,实现流控。

四、滑动窗口


         滑动窗口是TCP协议用于实现流量控制的一种机制。发送方和接收方分别维护各自的缓冲区(窗口)。发送方的窗口大小由接受方的TCP首部的窗口字段决定。

滑动过程:

接收方缓冲区大小 = 发送窗口大小

接收方确认大小 = 滑动大小 = 可用窗口大小 

五、拥塞控制


 TCP主要通过四个算法实现拥塞控制:慢开始、拥塞避免、拥塞发生、快速恢复

慢开始

拥塞窗口(cwnd)从1开始,指数级上升

拥塞避免

由于慢开始cwnd增长的非常快,为了避免网络拥塞,设置了一个门限(ssthresh),当cwnd > ssthresh时,进入拥塞避免,使cwnd的上升速度从指数级降为线性级,控制拥塞窗口的增长速度。

拥塞发生

当触发了重传机制,就进入了拥塞发生算法:

超时重传:

        出现超时重传时 TCP 会认为出现了比较严重的网络问题以至于连ACK都收不到,就会启用比较激进的拥塞算法:

  • ssthresh 设为 cwnd/2
  • cwnd 重置为 1

快速重传:

        出现快速重传时 TCP 认为这种情况不严重,因为大部分没丢,只丢了一小部分,所以当发生快速重传的拥塞发生算法:

  • cwnd = cwnd/2
  • ssthresh = cwnd

快速恢复

        快速重传一般和快速恢复算法同时使用,

  • cwnd = ssthresh + 3
  • 重传丢失的数据包
  • 每收到一个重复的ACK,cwnd + 1
  • 确认新数据的ACK到达,设置 cwnd = ssthresh

六、TCP和UDP区别


TCP面向连接可靠传输效率慢所需资源多

要求通信数据可靠的场景

(如文件传输、邮件传输)

首部20-40字节
UDP无连接不可靠传输效率快所需资源少

要求通信速度快的场景

(如音频、视频)

首部8字节

TCP:点对点面向连接的可靠性字节流传输协议,只能一对一,由于需要保证可靠性所有性能较差,一般用于重要数据的传递,如文件、邮件传输等。

UDP:无连接的不可靠的字节流传输协议,可以一对一,一对多,多对一,多对多,性能相对较好,一般用于直播、语音、视频等要求实时性且允许丢包的场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值