IP被称为Internet协议,是Internet上使用的关键底层协议。 TCP/IP是一种通用通信协议,它使Internet成为允许不同类型的计算机和不同操作系统之间连接的网络。
作者:Kwang Feng来源:今日头条新闻| 2019-03-28 13: 34收藏分享
IP地址
定义:
IP被称为Internet协议,是Internet上使用的关键底层协议。 TCP/IP是一种通用通信协议,它使Internet成为允许不同类型的计算机和不同操作系统之间连接的网络。
特征:
IP协议可以灵活地适应各种网络硬件。几乎不需要底层网络硬件。任何网络都可以将二进制数据从一个位置传输到另一个位置,并且可以使用IP协议将内存添加到Internet。
要求:
对于通信需求,必须在连接到Internet的每台计算机上运行IP软件。为了随时准备发送或接收信息。
物质:
IP地址由IP协议指定,并由32位二进制数(IPv4)表示。最新的IPv6协议将IP地址提高到128位,这使得IP地址更加广泛,可以解决当前IP地址的不足。但是,IPv6协议距离实际应用还有一段距离。目前,大多数操作系统和应用软件都基于32位IP地址。
组成:
32位IP地址(IPv4)主要分为前缀和后缀两部分。前缀表示计算机所属的物理网络(网络号),后缀确定网络上的唯一计算机(主机号)。这是:
IP地址=网络号+主机号
分类:
在Internet上,每个物理网络都具有唯一的网络号。根据网络号,IP地址可以分为五类,即A类,B类,C类,D类和E类。其中,A类,B类和C类属于基类,D类用于组播传输,E类属于保留类。各种IP地址的范围如下:
网站地址:
在IP地址中,主机地址为0,表示网络地址。例如:128.111.0.0。
广播地址(所有'1'地址):
网络号后面的所有地址都是1,表示广播地址。
退货地址:
127.0.0.1表示用于测试的返回地址,也称为本地地址。
全'0'地址:
对应当前主持人。
ABC主类型地址保留区域:
IP/TCP协议和握手过程以及数据包格式中间级别
域名系统(DNS)
域名系统是一个分布式数据库,提供将主机名(即URL)转换为IP地址的服务。RFC
Request For Comments(RFC)是按编号安排的一系列文件。该文档收集有关Internet的信息,以及UNIX和Internet社区的软件文件,包括tcp/ip协议的标准文档。
港口
端口包括两种类型,逻辑端口和物理端口。
物理端口是指物理上存在的端口,例如ADSL调制解调器,集线器,交换机或路由器上用于连接其他网络设备的接口,例如RJ-45端口,SC端口,等等。
逻辑端口是用于区分逻辑意义上的服务的端口,例如TCP/IP协议中的服务端口。端口号范围为0到65535,例如端口80用于浏览Web服务,端口21用于FTP服务。等待。
IP/TCP协议和握手过程以及数据包格式中间级别
港口代码
由于存在大量物理端口和逻辑端口,总共(2 ^ 16-1),为了区分端口,每个端口都有编号,即端口号。传输层的端口号分为服务器使用的端口号(0-49151 [已知端口号(0-1023),注册端口号(1024-49151)]))和使用的端口号客户(49151-65535)。网络常用端口号 - 江亚伟的博客--CSDN博客
应用程序编程接口(API)
API是一些预定义的功能。常用的编程接口是socket和TLI。其功能包括:远程过程调用(RPC),标准查询语言(SQL),文件传输和信息传递。 API可以应用于所有计算机平台和操作系统。
摘要设计文档的界面部分很简单,一般分为三个部分:用户界面,外部界面和内部界面。用户界面只需要简要描述用户操作和反馈结果;外部接口简要描述了硬件输入输出,网络传输协议等;内部接口简要描述了模块之间的值传输,数据传输等。
IP/TCP协议和握手过程以及数据包格式中间级别
包格式
TCP/IP协议的每一层都发送不同的数据包。公共IP数据包,TCP数据包,UDP数据包和ICMP数据包。
IP/TCP协议和握手过程以及数据包格式中间级别
IP数据报:
IP数据包在IP协议之间发送,主要在以太网和互联网协议模块之间发送,为兄弟会传输提供未链接的数据。 IP协议不保证数据包的传输,但发送的最大数据量。 IP协议提供不可靠的无连接数据报传输服务,IP层提供的服务通过IP层封装和解包数据报来实现。 IP协议结构定义如下:Typedef struct HeadIP {
无符号char headerlen: 4; //头长,4位数
无符号字符版本: 4; //版本,4位数
无符号字符servertype; //服务类型,占8位,即一个字节
无符号短总数; //总长度,16位
无符号短标识; //它由idoff组成,代表16位。前3位是标识符,后13位是切片偏移。
无符号短暂的idoff;
无符号字符; //生存时间,占8位数
unsigned char proto; //协议,占8位数
无符号短校验和; //第一校验和,16位
unsigned int sourceIP; //源IP地址,即32位
无符号int destIP; //目标IP地址,32位
} HeadIP;
注意:理论上,IP数据包的最大长度为655535字节,受IP标头的16位总长度字段限制。
IP路由过程:
IP/TCP协议和握手过程以及数据包格式中间级别
TCP数据报:
传输控制协议TCP是一种用于提供可靠数据传输的流行协议。它在网络协议模块和TCP模块之间传输。 TCP数据包分为两部分:TCP标头和数据。 TCP数据封装在IP数据包的数据部分中,类似于udp的IP数据包。 TCP标头包含源端口,目标端口,序列号,确认序列号,标头长度,符号位,窗口,校验和,紧急指针,可选,填充和数据区域。当发送数据时,应用层将数据发送到传输层,并且利用TCP的TCP报头,数据构成分组。如果添加到IP报头,则报文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标志;
WORD WndSize; //16位窗口大小
WORD CheckSum; //16位校验和
WORD UrgPrt; //16位紧急指针
} HeadTCP;
TCP提供完全可靠的,面向连接的全双工(包含两个独立且相对的连接)流服务,允许两个应用程序建立连接并以全双工方向发送数据。然后终止连接。每个TCP连接都可靠地建立并完全终止,并且在终止发生之前可靠地传输所有数据。
IP/TCP协议和握手过程以及数据包格式中间级别
更着名的TCP概念是三次握手。所谓的三次握手是指双方之间交换三次信息。三次握手是确保在丢包,重复和延迟的情况下双方之间信息交换的确定性的必要和充分条件。
TCP/IP三次握手建立连接:
第一次握手:客户端 - 发送---- syn包(seq=x)-----服务器 - 进入SYN_END状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x + 1),并发送SYN包(seq=x),即SYN + ACK包,服务器进入SYN—— RECV状态;
第三次握手:客户端从服务器接收SYN + ACK数据包,并向服务器发送确认数据包ACK(ack=y + 1)。发送数据包后,客户端和服务器进入ESTABLISHED状态,完成握手,并建立连接。
IP/TCP协议和握手过程以及数据包格式中间级别
注意:握手时,发送的数据包不包含数据;建立连接后,数据正式传输。将保持TCP连接,直到主动关闭连接。
数据传输机制:
1.超时重传:该机制用于确保TCP传输的可靠性。
2.快速重传:收到连续丢包信息后,发送方立即开始重传,保存等待超时。
3.流量控制:TCP滑动窗口流量控制。滑动窗口可以是提高TCP传输效率的机制。
4.拥塞控制:基于整个网络考虑,拥塞策略算法主要包括:慢启动,拥塞避免,拥塞发生和快速恢复。
TCP四次握手断开:第一次握手:主要中断发送FIN以通知断开连接的一方:我即将关闭数据传输通道。此时,主要休息也可以接收数据。
第二次握手:在收到FIN报文后,被破坏的一方向主断开方发送ACK,确认序列号是接收到的序列号+1(与SNK相同,一个FIN占用序列号)。
第三次握手:被破坏的一方发送一个FIN通知活动方:我即将关闭数据传输通道。
第四次握手:在接收到FIN之后,主断开方向断开的一方发送ACK,确认序列号是接收到的序列号+1,并且两个信道都断开。四挥手完成。
IP/TCP协议和握手过程以及数据包格式中间级别
注意:可靠的传输服务软件用于数据流。
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为单位,每个校验和都是补码(第一个数字是符号位)并求和,然后相加。
今天的大多数系统都提供UDP数据包,默认情况下可以读写超过8192个字节(使用此默认值是因为8192是NFS读写用户数据的默认值)。由于UDP协议经过纠错,传输过程类似于IP协议,即IP数据包,然后ARP协议用于解析物理地址并最终发送。
UDP网络发送和接收数据:
IP/TCP协议和握手过程以及数据包格式中间级别
ICMP包
ICMP协议称为Internet控制包协议。作为IP协议的辅助协议,ICMP协议用于与其他主机或路由器交换错误包和其他重要信息,并可以将某个设备的故障信息发送给其他设备。 ICMP包头结构如下:Typedef struct HeadICMP {
BYTE类型; //8位类型
BYTE代码; //8位代码
WORD ChkSum; //16位校验和
} HeadICMP;