Linux网络编程|TCPIP协议概述

tech2024-06-27  72

TCP/IP协议概述

1. TCP/IP的分层模型

TCP/IP协议的4层模型是在OSI的7层协议模型的基础上简化而成 TCP/IP协议是一个复杂的协议,是由一组专业化协议组成,这些协议包括一些列子协议。下面介绍各层在TCP/IP整体架构中的作用

网络接口层:是TCP/IP协议软件的最底层,负责将二进制流转换为数据帧,并进行数据帧的发送和接收。数据帧是网络传输的基本单元网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机传输层:负责提供应用程序之间的通讯服务(又称端到端通讯)应用层:应用程序间沟通的层

2. TCP/IP协议通讯模型

TCP/IP协议通讯协议模型 TCP/IP通讯协议结构 数据的封装与传递过程

3. TCP/IP核心协议

TCP/IP协议群中的核心协议被设计运行在网络层和传输层,它们为网络中的各主机提供通讯服务,也为模型的最高层(应用层)的协议提供服务。下面主要介绍传输层TCP和UDP协议

3.1 TCP

TCP的上一层是应用层,TCP向应用层提供可靠的面向对象的数据流传输服务。TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递,它提供高可靠性通讯(即数据无误、数据无丢失、数据无失序、数据无重复到达的通讯)。应用程序通过向TCP层提交数据发送/接收端的地址和端口号而实现应用层的数据通讯。通过IP的源/目的可以唯一的区分网络中两个设备的连接,通过socket的源/目的可以唯一的区分网络中两个应用程序的连接 TCP是面向连接的,即当计算机双方通讯时必须先建立连接,然后进行数据通讯,最后拆除连接。TCP在建立连接时又分三步走(即3次握手):

第一步:(A->B) 主机A向主机B发送一个包含SYN即同步标志的TCP报文,SYN同步报文会指明客户端使用的端口及TCP连接的初始序号第二步:(B->A) 主机B在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示主机B的请求被接受,同时TCP序号被加1,ACK即确认第三步:(A->B) 主机A也返回一个确认报文ACK给服务器端,同样TCP序列号被加1,到此一个TCP连接完成

TCP数据报头结构如下示

源端口、目的端口:16位,标识出远端和本地的端口顺序号:32位,标识发送的数据报的顺序确认号:32位,希望收到的下一个数据报的序列号TCP头长:4位,表明TCP头中包含多少个32位字6位未用ACK:置1表明确认号是合法的;若为0,那么数据报不包含确认信息,确认字段被省略PSH:表示带有PUSH标志的数据,接收方因此请求数据报一到便可送往应用程序,而不必等到缓冲区装满时才传送RST:用于复位由于主机崩溃或其他原因而出现的错误的连接,还可用于拒绝非法的数据报或拒绝连接请求SYN:用于建立连接FIN:用于释放连接窗口大小:16位,窗口大小字段表示在确认字节之后还可以发送多少字节校验和:16位,是为了确保高可靠性而设置的,是校验头部、数据和伪TCP头部之和可选项:0或多个32位字,包括最大TCP载荷、窗口比例、选择重发数据报等选项

3.2 UDP

UDP即用户数据报协议,是一种面向无连接的不可靠传输协议,不需要通过3次握手来建立连接。同时,一个UDP应用可同时作为应用的客户或服务器方 UDP数据包头结构

源地址、目的地址:16位,标识出远端和本地的端口号数据包的长度是指包括包头和数据部分在内的总的字节数。因为包头的长度是固定的,所以该域主要用来计算可变长度的数据部分(又称数据负载)

3.3 协议的选择

协议的选择应该考虑到数据的可靠性、应用的实时性和网络的可靠性

对数据可靠性要求高的应用需选择TCP协议,对数据的可靠性要求不那么高的应用可选择UDP传送TCP协议中的3次握手,重传确认等手段可保证数据传输的可靠性,但是会有较大的时延,因此不适合对实时性要求较高的应用;而UDP协议则有很好的实时性网络状况不是很好的情况下需选择TCP协议,网络状况很好的情况下选择UDP可以减少网络负荷

关注我的公众号,共同交流学习嵌入式开发相关技术:

最新回复(0)