网络通讯协议—TCP/IP协议

发布时间:2026/8/24 18:02:28
网络通讯协议—TCP/IP协议 网络协议由3部分组成语义、语法、时序。其中语义用来解释控制信息每个部分的意义语法是用户数据与控制信息的结构与格式以及数据出现的顺序时序是对事件发生顺序的详细说明。可以这样形象地描述语义表示要做什么、语法表示要怎么做时序表示做的顺序。TCP/IP协议不是TCP和IP协议的合称是因特网整个网络TCP/IP协议簇。这个协议簇由4个层次组成网络接口层、网络层、传输层、应用层。IP是计算机网络相互连接进行通信而设计的协议位于TCP/IP协议簇结构体系网络层中。IP协议是利用IP地址在主机之间传递信息这是因特网能够运行的基础。因特网每一台主机都有一个唯一的IP地址。IP指IPv4地址的长度为32位共有2^32个IP地址分为4段每段8位用十进制数字表示每段数字范围为0-255段与段之间用句点隔开比如172.168.1.100。IP地址由网络标识号码与主机标识号码两部分组成。因此IP地址可分为两部分一部分为网络地址另一部分为主机地址。IP地址分为A、B、C、D、E五类适用的类型分别为大型网络、中型网络、小型网络、多目地址、备用常用的是B和C两类。端口既可是指硬件接口、也可是TCP/IP协议中的端口是计算机与外界进行通信交流的出口。端口号的范围是0-65535任何由TCP/IP提供的服务皆基于1-1023之间的端口号进行通信由IANA分配管理。其中低于255的端口号保留用于公共应用255到1023的端口号用于特殊应用高于1023的端口号称为临时端口号常用于软件服务。Python提供网络底层接口的主要来自socket模块。socket也称为“套接字”用于描述IP地址和端口是一个通信链的句柄可以用来实现不同计算机之间的通信。套接字是通过地址簇address family控制所用OSI网络层协议和套接字类型socket type控制传输层协议两个主要属性来控制如何发送数据的。套接字地址簇常用的是AF_INET用于IPv4 Internet寻址。AF_UNIX常量仅在支持UDS的系统上定义。套接字类型默认是SOCK_STREAM。SOCK_STREAM对应传输控制协议TCP。TCP传输需要握手或其他设置过程因此能够确保每条消息只传送一次而且是按正确顺序传送从而增加了可靠性不过会引入额外的延迟。UDP则相反传送没有顺序并且可以多次传送或者不传送适用于对顺序不太重要的协议或者用于广播。使用TCP的服务器与客户端TCP是一种面向连接的、可靠的、基于字节流的传输通信协议由IETF的RFC 793定义。位于IP/TCP模型中的传输层是处在IP层之上、应用层之下的中间层因此数据传出必须经过IP层。当应用层向TCP层发送用于网间传输、用8位字节表示的数据流TCP则把数据流分割成适当长度的报文段然后将离散的报文组装成比特流。为了保证数据的可靠传输会将从应用层传送到TCP实体的数据进行监管并提供了重发机制和流控制。TCP工作原理TCP为了保证数据不发生丢失对传输数据按字节进行了编号编号的目的是为了保证传送到接收端的数据能够按序接收。接收端会对已经接收的数据发回一个确认。若发送端在规定时间内未收到有编号的数据则将重新传送前面的数据。TCP当然并不会像我们一样使用顺序的整数作为数据包的编号而是通过一个计数器记录发送的字节数。举个例子如果数据流被切割为几个包其中某个包大小为1024字节序号为3600那么下一个数据包的序号就是4624。这说明网络栈无须记录数据流是如何分割成数据包的。而且TCP初始序列号是随机选择的这样可以避免TCP序号易于猜测而伪造数据进行欺骗或攻击。TCP无须按照数据包依次发送可以一次性发送多个数据包同时通过发送方传输的数据量大小进行减缓或暂停即所谓的流量控制。TCP如果发现数据包丢弃就会减少每秒发送的数据量。使用Python的socket模块如何进行TCP通信使用TCP进行通信首先要从服务器开始先初始化Socket然后绑定bind端口对端口进行监听listen调用accept阻塞等待客户端连接。这时如果某个客户端初始化一个Socket然后连接服务器connect如果连接成功那么客户端与服务器的连接就建立了。客户端发送数据请求服务器接收请求并处理请求然后把回应数据发送给客户端客户端读取数据最后关闭连接一次交互结束。使用UDP的服务器与客户端UDPUser Datagram Protocol用户数据报协议是OSI参考模型中一种无连接的传输层协议提供面向事务的简单不可靠信息传送服务。跟TCP协议一样UDP在网络中用于处理数据包不过它只负责将应用层的数据发送出去不具备差错控制和流量控制功能。因此在传送过程中如果数据出错就要由高层协议处理。UDP不需要具备差错控制和流量控制等功能的开销使得数据传输效率高、延时小、适合用于对可靠性要求不高的应用比如视频点播、QQ等。UDP工作原理UDP使用底层互联网协议传送报文提供不可靠的无连接的数据包传输服务。UDP在IP报文的协议号为17其报文是封装在IP数据中进行传输的。UDP报文由UDP源端口字段、UDP目标端口字段、UDP报文长度字段、UDP校验和字段以及数据区组成。首先通过端口机制进行复用和分解每个UDP应用程序在发送数据报文之前必须与操作系统协商获取相应的协议端口及端口号然后根据目的端口号进行分解接收端使用UDP的效验进行确认查看UDP报文是否正确到达了目标主机的相应端口。