摘抄——TCP IP协议

1-2.TCP IP 协议

TCP/IP 协议是现在比较通用的以太网通信协议,与开放互联模型 ISO 相比,采用了更加开放的方式,它已经被美国国防部认可,并被广泛应用于实际工程。TCP/IP 协议可以用在各种各样的信道和底层协议(如 T1、X.25 以及 RS232 串行接口)之上。确切地说,TCP/IP 协议是包括 TCP 协议、IP 协议、UDP协议、ICMP 协议和其他一些协议的协议组。

1-2-1.端口号

在以太网中,基于 TCP 协议或 UDP 协议的通信必须使用端口号才能与上层应用进行通信,端口号的范围从 0 到 65535,有一些端口号对应有默认功能,比如用于浏览网页服务的 80 端口,用于 FTP 服务的 21 端口,用于 MODBUS TCP 通信的 502 端口等等。

1-2-2.UDP 协议

UDP 为用户数据协议,是使用一种协议开销最小的简单无连接传输模型。UDP 协议中没有握手机制,因此协议的可靠性仅等同于底层网络。无法确保对发送、回复消息提供保护。对于数据的完整性,UDP 还提供了校验和,并且通常用不同的端口号来寻址不同函数。
UDP 组播是 Internet 组管理协议,简称 IGMP。组播传输是在发送者和每一接收者之间实现点对多点的网络连接,用于典型的一主多从模式,有效地解决了单点发送、多点接收的问题,能够大量节约网络带宽、降低网络负载。

1-2-3.TCP 协议

  1. TCP 的基本原理

    TCP 协议为传输控制协议(Transport Control Protocol),是一种面向连接的、可靠的传输层协议。面向连接是指一次正常的 TCP 传输需要通过在 TCP 客户端和 TCP 服务端建立特定的虚电路连接来完成。要通过 TCP 传输数据,必须在两端主机之间建立连接。在通过以太网通信的主机上运行的应用程序之间,TCP 提供了可靠、有序并能够进行错误校验的消息发送功能。TCP 能保证接收和发送的所有字节内容和顺序完全相同。TCP 协议在主动设备(即发起连接的设备)和被动设备(即接收连接的设备)之间创建连接。连接建立后,任一方均可发起数据传送。TCP 协议是一种“流”协议,这意味着消息中不存在结束标志,所有接收到的消息均被认为是数据流的一部分。例如,客户端设备向服务端发送三条消息,每条均为 20 个字节。服务器只看到接收到一条60 字节的“流”(假设服务器在收到三条消息后执行一次接收操作)。

  2. 套接字(Socket)的基本概念

    套接字(Socket)是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的 IP 地址、本地进程的协议端口、远端主机的 IP 地址、远端进程的协议口。应用层通过传输层进行数据通信时,TCP 会遇到同时为多个应用程序进程提供并发服务的问题。多个 TCP 连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与 TCP/IP 协议互提供了套接字接口。应用层可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

  3. 建立套接字(Socket)连接

    建立套接字连接至少需要一对套接字,其中一个运行于客户端(也称之为 TCP 客户端),称为ClientSocket,另一个运行于服务端(也称之为 TCP 服务器),称为 ServerSocket。套接字之间的连接过程分为三个步骤:服务端监听,客户端请求,连接确认。

    • 服务端监听:服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
    • 客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务端的套接字。为此,客户端的套接字必须首先描述它要连接的服务端的套接字,指出服务端套接字的地址和端口号,然后就向服务端套接字提出连接请求。
    • 连接确认:当服务端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。创建套接字连接时,可以指定使用的传输层协议,套接字可以支持不同的传输层协议(TCP 或 UDP),当使用 TCP 协议进行连接时,该套接字连接就是一个 TCP 连接。

Socket示意图

posted @   shanzm  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
TOP
点击右上角即可分享
微信分享提示