今日分享主题:TCP 与 UDP 两种通讯协议的区别,从整体的视角上来看看他们的差异,这也是我们学习网络编程应该掌握的基础技术点。

 

1、TCP与UDP两种通讯协议的区别,如下图所示:

TCP & UDP 总结_python

 

2、OSI 七层模型和TCP/IP模型中TCP/UDP协议所处的层次,如下图所示:

TCP & UDP 总结_python_02

 

理解socket的作用,如下图所示:

TCP & UDP 总结_python_03

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

 

TCP/IP分层模型的四个协议层分别完成以下的功能:


  第一层:网络接口层
  包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。

 

  第二层:网间层
  对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。

 

  第三层:传输层
  对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。

 

  第四层:应用层
  对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。

 

3、两种通讯协议的通讯模型,如下图所示:

TCP & UDP 总结_数据_04

TCP & UDP 总结_公众号_05

 

4、Python 在网络编程方面使用过程中的总结:

  • TCP 创建Socket时,AF_INET指定使用IPv4协议,如果要用更先进的IPv6,就指定为AF_INET6。SOCK_STREAM指定使用面向流的TCP协议。

  • UDP创建Socket时,SOCK_DGRAM指定了这个Socket的类型是UDP。绑定端口和TCP一样,但是不需要调用listen()方法,而是直接接收来自任何客户端的数据。

  • 在TCP编程里面,accept()方法返回客户端的socket 和 地址及端口, recv()方法用于接收对方发送过来的数据,send() 方法用于向对方发送数据。

  • 在UDP编程里面,recvfrom()方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用sendto()就可以把数据用UDP发给客户端。

  • TCP and UDP 里面编程时发送与接收数据时要做encode() 编码与decode() 解码处理。

欢迎关注【无量测试之道】公众号,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、


文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

TCP & UDP 总结_python_06

 添加关注,让我们一起共同成长!