使用udp协议传输文件以完成_IP / TCP协议的包装设计以及握手过程和数据包格式中间的详细说明

IP地址

定义:

IP被称为Internet协议,是Internet上使用的关键基础协议。 TCP / IP是一种通用的通信协议使用udp协议,使Internet成为允许连接不同类型的计算机和不同的操作系统的网络。

功能:

IP协议具有适应各种网络硬件的灵活性,并且对底层网络硬件几乎没有要求。任何网络都可以将二进制数据从一个位置传输到另一位置,并且内存可以使用IP协议加入Internet。

要求:

出于通信需要,必须在连接到Internet的每台计算机上运行IP软件。 ,以便您随时准备发送或接收信息。

精华

IP地址由IP协议指定,并由32位二进制数(IPv 4)表示。最新的IPv6协议将IP地址升级为128位,这使得IP地址更加广泛并且可以解决当前的问题很好,虽然IP地址短缺,但是IPv6协议距离实际应用还很遥远,目前,大多数操作系统和应用软件都基于32位IP地址。

组成:

32位IP地址(IPv 4)主要分为前缀和后缀两部分。前缀表示计算机所属的物理网络(网络号),而后缀确定唯一的计算机(主机号)。

IP地址=网络号+主机号

分类:

在Internet上使用udp协议,每个物理网络都有唯一的网络号。根据网络编号的不同,IP地址可以分为A,B,C,D和E五类。其中,Type A,Type B和Type C属于基本类型,使用TypeD。用于多播传输亚博APP安全有保障 ,类型E属于保留类型。各种IP地址的范围如下:

网络地址:

在IP地址中,主机地址为0,即网络地址。例如:12 8. 11 1. 0. 0。

广播地址(所有“ 1”地址):

在网络号之后,所有全1的地址代表广播地址。

回信地址:

12 7. 0. 0. 1表示用于测试的返回地址,也称为本地地址。

所有“ 0”地址:

对应于当前主机。

为ABC地址的主要类型保留的区域:

域名系统(DNS)

域名系统是一个分布式数据库,提供将主机名(即Web地址)转换为IP地址的服务。

RFC

征求意见书(RFC),是按编号排列的一系列文档。该文件收集有关Internet的相关信息以及UNIX和Internet社区的软件文件,包括有关tcp / ip协议的标准文档。

端口(端口)

端口包括两种类型:逻辑端口和物理端口。

物理端口是指物理存在的端口,例如ADSL调制解调器,集线器,交换机,用于连接到其他网络设备接口的路由器,例如RJ-45端口,SC端口等。

逻辑端口是指用于在逻辑上区分服务的端口,例如TCP / IP协议中的服务端口。端口号范围是0到65535,例如用于浏览Web服务的端口80和用于FTP服务的21个端口等等。

端口代码

由于大量物理端口和逻辑端口,所以总共有(2 ^ 16- 1)。为了区分端口,每个端口都被编号。这是端口号。传输层分为服务器使用的端口号(0-49151 [众所周知的端口号(0-102 3),注册的端口号(1024-4915 1)]))和服务器使用的端口号。客户端(49151-6553 5)。网络常用端口号-江亚克的博客-CSDN博客

应用程序编程接口(API,应用程序编程接口)

API是一些预定义的功能。常用的编程接口是套接字和TLI。其功能主要包括:远程过程调用(RPC),标准查询语言(SQL),文件传输和信息传递等。API可以应用于所有计算机平台和操作系统。

外形设计文档的界面部分很简单,通常分为三部分:用户界面,外部界面和内部界面。用户界面仅需要简要描述用户操作和反馈结果;外部接口简要描述了硬件输入和输出,网络传输协议等。内部接口简要描述了模块之间的值传输和数据传输。

数据包格式

TCP / IP协议的每一层发送不同的数据包,常见的是IP书包,TCP数据包,UDP数据包和ICMP数据包。

IP数据报:

IP数据包在IP协议之间(主要是在以太网和Internet协议模块之间)发送,从而提供未链接的数据博爱传输。 IP协议不能保证发送数据包,但可以最大程度地发送数据。 IP协议提供了不可靠且无连接的数据报传输服务,并且IP层提供的服务是通过IP层对数据报的封装和解封装来实现的。 IP协议结构定义如下:

typedef struct HeadIP { unsigned char headerlen: 4; //首部长度,占4位 unsigned char version: 4 ; //版本,占4位 unsigned char servertype ; //服务类型,占8位,即一个字节 unsigned short totallen; //总长度,占16位 unsigned short id ; // 与idoff构成表示,共占16位,前3位是标识,后13位是片偏移 unsigned short idoff; unsigned char ttl ; //生存时间,占 8位 unsigned char proto ;//协议,占8位 unsigned short checksum ;// 首部检验和,占16位 unsigned int sourceIP ; // 源IP地址 ,占32位 unsigned int destIP ;// 目的IP地址,占32 位 }HeadIP;

注意:理论上,IP数据包的最大长度为655535字节,这受IP报头中的16位总长度字段限制。

IP路由选择过程:

TCP数据报:

传输控制协议TCP是提供可靠数据传输的通用协议。它在网络协议模块和TCP模块之间传输。 TCP数据包分为两部分:TCP报头和数据。 TCP数据封装在IP数据包的数据部分中,类似于udp亚博APP安全有保障 ,封装在IP数据包中。 TCP数据包标头包含源端口,目标端口,序列号,确认序列号,标头长度,符号位,窗口,校验和,紧急指针,可选,填充和数据区域。当发送数据时,应用层将数据传输到传输层,再加上TCP的TCP报头,数据就构成了数据包。如果添加了IP标头,则消息类型Internet层IP的数据将构成IP数据包。 TCP头结构定义如下:

typedef struct HeadTCP{ WORD SourcePort ; //16位源端口号 WORD DePort ;// 16位目的端口号 DWORD SequenceNo ;//32位序列号 DWORD ConfirmNo ;// 32位确认序列号 BYTE HeadLen ; //与Flag为一个组成部分,首部长度,占4位,保留6位,6位表示,共16位 BYTE Flag; WORD WndSize ; //16位窗口大小 WORD CheckSum ; //16位校验和 WORD UrgPrt;// 16位紧急指针 }HeadTCP;

TCP提供了完全可靠的,面向连接的全双工(包括两个独立且相对的连接)流服务,允许两个应用程序建立连接,并在全双工方向上发送数据,然后终止连接。每个TCP连接均可靠建立并完美终止。在终止发生之前,所有数据都将可靠地传输。

TCP的更著名的概念是3向握手。所谓三向握手,是指双方分三次进行信息交互。三向握手是确保丢包,重复和延迟时确保双方之间信息交换的确定性的必要和充分条件。

TCP / IP三向握手建立连接:

第一次握手:client--send ---- syn package(seq = x)----- server--进入SYN_END状态并等待服务器确认;

第二次握手:当服务器接收到syn数据包时,它必须确认客户端的SYN(ack = x + 1),并且还发送SYN数据包(seq = x),即SYN + ACK数据包,并且服务器进入SYN——RECV状态; <​​/ p>

第三次握手:客户端从服务器接收SYN + ACK数据包,并将确认数据包ACK(ack = y + 1))发送到服务器。发送数据包后,客户端和服务器进入ESTABLISHED状态,完成握手并连接Create。

注意:在握手过程中,发送的数据包不包含数据;建立连接后,数据正​​式传输。 TCP连接将一直保持到主动关闭该连接为止。

数据传输机制:

1.超时重传:此机制用于确保TCP传输的可靠性。

2.快速重传:接收到连续的丢包信息后,发送方立即开始重传,从而节省了等待超时时间。

3.流量控制:TCP滑动窗口流量控制。滑动窗口可以作为提高TCP传输效率的一种机制。

4.拥塞控制:基于整个网络的考虑,拥塞策略算法主要包括:缓慢启动,避免拥塞,发生拥塞和快速恢复。

TCP四向握手断开连接:

第一次握手:主要中断方发送FIN通知被中断方:我即将关闭数据传输通道。此时,主中断器也可以接收数据。

第二次握手:被中断方收到FIN数据包后,向主中断方发送ACK,以确认该序号为接收到的序号+ 1(与SNK相同,一个FIN占用一个序号)。

第三次握手:断开连接的一方发送FIN通知活动方:我即将关闭数据传输通道。

第四次握手:主断开连接方收到FIN后,向断开连接的方发送ACK,确认序列号是接收到的序列号+ 1,并且两个通道均断开连接。挥手四次完成。

注意:可靠的传输服务软件是面向所有数据流的。

UDP数据包:

用户数据包协议UDP是无连接协议。采用此协议后,这两个应用程序不需要建立连接。它为应用程序提供一次性数据传输服务。 UDP协议在Internet协议模块和UDP模块之间工作。它不提供错误恢复或数据重传。因此智博体育 ,使用UDP协议的应用程序更加复杂,例如DNS(域名解析服务)应用程序。 UDP数据包头结构如下:

typedef struct HeadUDP { WORD SourcePort ;// 16位端口号 WORD DePort ; //16位目的端口 WORD Len;//16位UDP长度 WORD ChkSum;// 16位UDP校验和}HeadUDP;

UDP数据包分为伪报头和报头两部分。

标头包含原始IP地址,目标IP地址,协议字,UDP长度,源端口,目标端口,数据包长度,校验和和数据区域。设置用于计算和验证。

伪头包含IP头的某些字段,其目的是允许UDP再次检查数据是否正确到达目的地。使用UDP协议时,协议字为17,报文长度包括报头和数据区的总长度,最小为8字节。校验和基于16的单位。每个人的补码(第一个数字是符号位)被添加到总和中,然后是补码。

大多数当前系统默认提供可读写8192字节以上的UDP数据包(使用此默认值,因为8192是NFS读写用户数据的默认值)。由于UDP协议具有错误和错误控制功能,因此发送过程类似于IP协议(即IP数据包),然后使用ARP协议解析物理地址,最后发送。

在UDP网络上发送和接收数据

ICMP数据包

ICMP协议称为Internet控制包协议。作为IP协议的辅助协议,ICMP协议用于与其他主机或路由器交换错误数据包和其他重要信息,并且可以将特定设备的故障信息发送到其他设备。 ICMP数据包头结构如下:

typedef struct HeadICMP { BYTE Type ;//8位类型 BYTE Code; //8位代码 WORD ChkSum;// 16位校验和}HeadICMP;

上一篇 使用UDP协议有哪些注意事项?