(IP/IPv4:Internet Protocol)
网际协议(IP)是一个网络层协议,它包含寻址信息和控制信息 ,可使数据包在网络中路由。 IP 协议是 TCP/IP 协议族中的主要网络层协议,与 TCP 协议结合组成整个因特网协议的核心协议。 IP 协议同样都适用于 LAN 和 WAN 通信。
IP 协议有两个基本任务:提供无连接的和最有效的数据包传送;提供数据包的分割及重组以支持不同最大传输单元大小的数据连接。对于互联网络中 IP 数据报的路由选择处理,有一套完善的 IP 寻址方式。每一个 IP 地址都有其特定的组成但同时遵循基本格式。 IP 地址可以进行细分并可用于建立子网地址。 TCP/IP 网络中的每台计算机都被分配了一个唯一的 32 位逻辑地址,这个地址分为两个主要部分:网络号和主机号。网络号用以确认网络,如果该网络是因特网的一部分,其网络号必须由 InterNIC 统一分配。一个网络服务器供应商(ISP)可以从 InterNIC 那里获得一块网络地址,按照需要自己分配地址空间。主机号确认网络中的主机,它由本地网络管理员分配。
当你发送或接受数据时(例如,一封电子信函或网页),消息分成若干个块,也就是我们所说的“包”。每个包既包含发送者的网络地址又包含接受者的地址。由于消息被划分为大量的包,若需要,每个包都可以通过不同的网络路径发送出去。包到达时的顺序不一定和发送顺序相同, IP 协议只用于发送包,而 TCP 协议负责将其按正确顺序排列。
除了 ARP 和 RARP ,其它所有 TCP/IP 族中的协议都是使用 IP 传送主机与主机间的通信。当前 IP 协议有两种版本: IPv4 和 IPv6 。本文主要阐述 IPv4 。 IPv6 的相关细节将在其它文件中再作介绍。
协议结构 4 8 16 32bit
Version
IHL
Type of service
Total length
Identification
Flags
Fragment offset
Time to live
Protocol
Header checksum
Source address
Destination address
Option + Padding
Data
Version – 4位字段,指出当前使用的 IP 版本。
IP Header Length (IHL) ― 指数据报协议头长度,具有32位字长。指向数据起点。正确协议头最小值为5。
(TCP:Transmission Control Protocol)
传输控制协议 TCP 是 TCP/IP 协议栈中的传输层协议,它通过序列确认以及包重发机制,提供可靠的数据流发送和到应用程序的虚拟连接服务。与 IP 协议相结合, TCP 组成了因特网协议的核心。
由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 TCP 的“端口号”完成的。网络 IP 地址和端口号结合成为唯一的标识 , 我们称之为“套接字”或“端点”。 TCP 在端点间建立连接或虚拟电路进行可靠通信。
TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。
关于流数据传输 ,TCP 交付一个由序列号定义的无结构的字节流。 这个服务对应用程序有利,因为在送出到 TCP 之前应用程序不需要将数据划分成块, TCP 可以将字节整合成字段,然后传给 IP 进行发送。
TCP 通过面向连接的、端到端的可靠数据报发送来保证可靠性。 TCP 在字节上加上一个递进的确认序列号来告诉接收者发送者期望收到的下一个字节。如果在规定时间内,没有收到关于这个包的确认响应,重新发送此包。 TCP 的可靠机制允许设备处理丢失、延时、重复及读错的包。超时机制允许设备监测丢失包并请求重发。
TCP 提供了有效流控制。当向发送者返回确认响应时,接收 TCP 进程就会说明它能接收并保证缓存不会发生溢出的最高序列号。
全双工操作: TCP 进程能够同时发送和接收包。
TCP 中的多路技术:大量同时发生的上层会话能在单个连接上时进行多路复用。
协议结构 16 32 bit
Source port
Destination port
Sequence number
Acknowledgement number
Offset
Reserved
U
A
P
R
S
F
Window
Checksum
Urgent pointer
Option + Padding
Data
Source Port – 识别上层源处理器接收 TCP 服务的点。
Destination Port – 识别上层目标处理器接收 TCP 服务的点。
Sequence Number – 通常指定分配到当前信息中的数据首字节的序号。在连接建立阶段,该字段用于设别传输中的初始序列号。
Acknowledgment Number – 包含数据包发送端期望接收的数据下一字节的序列号。一旦连接成功,该值会一直被发送。
Data Offset – 4 位。TCP 协议头中的32位字序号表示数据开始位置。
Reserved – 6位。预留以备用,必须设置为0。
Control Bits (Flags) – 6位。传送各种控制信息。控制位可以是:
U (URG)
Urgent pointer field significant.
A (ACK)
Acknowledgment field significant.
P (PSH)
Push function.
R (RST)
Reset the connection.
S (SYN)
Synchronize sequence numbers.
F (FIN)
No more data from sender.