TCP/UDP/Socket 通俗讲解

这篇具有很好参考价值的文章主要介绍了TCP/UDP/Socket 通俗讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.封包和拆包

封包,就是发送数据前把自己本地需要发送的数据包装一下,即把要发送的原始数据附加上接受者可以辨识到自己身份等一些额外信息。有点像寄一封信,信封上填写的寄件人和收件人以及地址。
拆包,是接收到对方封包后发送来的数据后,拆出原始信息和对方的附加信息,以得知对方的来源。
像是拆信封。

2.TCP/UDP与socket

2.1 TCP 和UDP
  1. TCP 是面向连接的传输,需要通信双方完成三次握手成功后,才能正常通信,四次挥手后断开
    三次握手的目的是为了 通信双方的设备都没有问题,
    四次挥手是为了确保断开的双方本次通信连接时占用的内存全部释放掉。
  2. TCP 是基于字节流的传输,是按字节进行封装和发送的
  3. TCP 是可靠的传输,不允许有丢包,重复发送(对包后重发时),接收顺序出现错误等
  4. UDP 是面向无连接的,不需要握手
  5. UDP 是继续数据报文的,不是一个字节一个字节封装和发送的,是分块发送的
  6. UDP 是不可靠的传输,不负责接收方能够可靠的接收到消息,丢包后不会再做重发等弥补操作
  7. UDP 相比于TCP 来说比较快,效率更高,但它是不可靠的
2.2 socket介绍
  1. 一个端口号只允许一个进程占用,所以我们通过这个端口号就能找到特定的应用程序进程
  2. 两台主机之间通过网络通信需要知道 对方ip(最终解析成的ip)
  3. 想要两台主机的两个进程之间通信,就必须知道对方的 ip和端口号,
    人们把ip加端口号抽象成了套接字,用来完成两台主机之前的进程通信,
    套接字也叫Socket,人们实现了Socket的一些细节,并暴露出一些API接口,
    供开发人员开发,我们叫它Socket API,SocketAPI 是提供开发者调用TCP 和UDP的api,
    开发者不需要了解太底层,直接使用这些Api 就能实现TCP点对点通信,以及UDP的点播,多播和光播通信。

3.TCP/IP 协议族 示意图

TCP/UDP/Socket 通俗讲解

3.主机A 向主机B 通信时 各层数据的流向

应用层(封包) ---->传输层(封包)---->网络层(封包)---->对方网络接口层(封包并发送数据)---->对方网络接口层(拆包)---->对方网络层(拆包)---->对方传输层(拆包)
如下图箭头1,2,3,4,5,6,7,8流向
主机B 向主机A 发送也是类似
TCP/UDP/Socket 通俗讲解文章来源地址https://www.toymoban.com/news/detail-417674.html

到了这里,关于TCP/UDP/Socket 通俗讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络通信(Socket/TCP/UDP)

    Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址和端口。 Socket可以看

    2024年01月22日
    浏览(54)
  • TCP 和 UDP 的 Socket 调用

    在网络层,Socket 函数需要指定到底是 IPv4 还是 IPv6,分别对应设置为 AF_INET 和 AF_INET6。另外,还要指定到底是 TCP 还是 UDP。TCP 协议是基于数据流的,所以设置为 SOCK_STREAM,而 UDP 是基于数据报的,因而设置为 SOCK_DGRAM。 TCP 的服务端要先监听一个端口,一般是先调用 bind 函数,

    2024年02月08日
    浏览(32)
  • C/C++ Socket UDP 广播消息的发送与接收

    局域网内全网段广播消息的IP地址为:255.255.255.255,向该IP地址发送广播消息,局域网下的任何网段的客户机都能收到广播。 对于发送端,如果你只想给某个特定的网段发送消息,例如你的IP地址为192.168.31.107,那么你的广播地址是192.168.31.255,向该广播地址发送广播消息,只

    2024年02月12日
    浏览(35)
  • socket的基本使用,基于TCP/UDP

    OSI参考模型 Open System Interconnect 开放式系统 每层网络的由来 物理层:010101比特流,设备之间原始数据的传输,数模转换(发送端)和模数转换(接收端) -》传输过程可能出现错码和误码? 数据链路层:将原始比特流转换成逻辑传输符号,提供纠错编码,格式变为帧 -》出现

    2024年02月03日
    浏览(36)
  • socket端口复用之TCP和UDP

    目录 1.什么是端口复用? 2.多个socket可以绑定同一个端口吗? 3.绑定同一端口的多个套接字如何接收数据? 4.SO_REUSEADDR和SO_REUSEPORT选项设置 5.SO_REUSEADDR和SO_REUSEPORT在实际中的运用? 5.1 解决TCP套接字处于TIME_WAIT状态占用端口号问题。 5.2 程序重启后后,端口未释放导致程序重启

    2024年02月07日
    浏览(38)
  • 基于python socket实现TCP/UDP通信

    两个应用程序如果需要进行通讯最基本的一个前提就是能够唯一的标示一个进程,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。能够唯一标示网络中的进程后

    2024年02月16日
    浏览(48)
  • socket、tcp、udp、http 的认识及区别

    二、SOCKET、TCP、UDP和HTTP的关系 1.socket 本身不是一种协议,而是对传输层中的 TCP/UDP 协议进行了封装,对用户隐藏了内部 TCP/UDP 是如何传输的,只提供一套接口(API)给程序员调用,从而完成socket编程。 2.通过socket接口,我们才能使用TCP/UDP协议。 3.而我们通常浏览网页用到的

    2024年02月03日
    浏览(39)
  • 使用 python socket 实现UDP/TCP网络通信

    目录 目录 1.socket简介 2.创建socket 2.1创建UDPSocket 2.2创建TCPSocket 3.使用UDPSocket发送数据并接收 4.使用UDPSocket发送广播 5.UDPSocket聊天器 (多线程实现消息的收发功能) 6.使用TCPSocket建立客户端 7.使用TCPSocket建立服务端        socket(简称:套接字),是支持TCP和UDP(网络传输方式

    2023年04月10日
    浏览(62)
  • 基于TCP/UDP的socket服务器搭建流程

    TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需 要建立连接 TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 TCP面向字节流,实际上是TCP把数据看成一连串

    2023年04月08日
    浏览(48)
  • Python使用 Twisted 实现 TCP/UDP Socket 编程

    更多文章: 技数未来 环境准备: - 安装Python:确保你已经安装了Python解释器。 - 安装Twisted:可以通过pip命令来安装Twisted库,运行`pip install twisted`即可。 依赖的类库: - twisted.internet.protocol:包含了实现TCP/UDP Socket编程所需的协议类。 - twisted.internet.reactor:用于处理事件循环

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包