TCP/IP 协议族
TCP/IP 协议族
TCP/IP 协议不是 TCP 和 IP 这两个协议的合称,而是指因特网整个 TCP/IP 协议族。
参考模型
TCP/IP 参考模型
TCP/IP 参考模型是首先由 ARPANET 所使用的网络体系结构。这个体系结构在它的两个主要协议出现以后被称为 TCP/IP 参考模型。这一网络协议一般分为四层:
网络访问层/链路层,用来处理连接网络的硬件部分。
互联网层/网络层用来处理在网络上流动的数据包,是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经过不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那就必须自行处理对分组的排序。互联网层使用因特网协议(
IP)。传输层为处于网络连接中的计算机之间的通信提供数据传输服务。在这一层定义了两个端到端的协议:传输控制协议(
TCP)和用户数据报协议(UDP)。TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。
应用层包含所有的高层协议,包括:虚拟终端协议(TELNET)、文件传输协议(FPT)、电子邮件传输协议(SMTP)、域名服务(DNS,)、网上新闻传输协议(NNTP)和超文本传输协议(HTTP),这些协议为应用提供对应的通信服务。
TELNET是远程登录服务的标准协议和主要方式,为用户提供了在本地计算机上完成远程主机工作的能力。FTP是用于在网络上进行文件传输的一套标准协议。
SMTP是一个提供可靠且有效的电子邮件传输的协议,它建立在FTP服务之上,主要用于完成系统之间的邮件信息传递,并提供有关来信的通知。DNS主要用于域名和 IP 之间的相互转换,是一种分布式网络目录服务。
NNTP用于新闻的发布、检索和获取。HTTP是一个基于TCP协议的用于客户端和服务端通信的请求-响应协议。

OSI 参考模型
OSI 参考模型是国际标准化组织指定的一个用于计算机或通信系统之间互联的标准体系。
物理层 - 通过物理媒体传输原始字节流
链路层 - 定义网络上数据的格式
网络层 - 决定数据通过哪条物理路径进行传输
传输层 - 通过传输协议传输数据
会话层 - 维护链接并负责控制端口和会话
展示层 - 保证数据的格式时可用并加密的
应用层 - 计算机交互层,在这里应用可以访问网络服务
TCP/IP 特点
- TCP/IP 协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准。
- TCP/IP 并不依赖于特定的网络传输硬件,所以 TCP/IP 协议能够集成各种各样的网络。
- 统一的网络地址分配方案,使整个 TCP/IP 设备在网中都有唯一的地址。
- 标准化的高层协议,可以提供多种可靠的服务。
TCP/IP 通信传输流
利用 TCP/IP 协议族进行网络通信时, 会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个 该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去。
这种把数据信息包装起来的做法称为封装。

IP 协议
IP 协议位于 TCP/IP 参考模型中的网络层,是整个 TCP/IP 协议族的核心,也是构成互联网的基础。它的主要内容包括:
- IP 编址方案
- 分组封装格式
- 分组转发规则
TCP 协议
TCP 协议位于参考模型中的传输层,是一种面向连接的、可靠的、基于字节流的传输层通信协议。当应用层向传输层发送用于网间传输的、用8位字节表示的数据流,TCP 则把数据流分割成适当长度的报文段( segment ),最大传输段大小通常受该计算机连接的网络的数据链路层的最大传送单元( MTU )限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
为了准确无误地将数据送达目标处,TCP 协议采用了三次握手策略来建立连接:
发送端首先向接收端发送一个带有
SYN标志的数据包接收端接收到带有
SYN标志的数据包后,返回带有ACK/SYN标志的数据包发送端在接收到接收端回传的带有
ACK/SYN标志的数据包后,发送带有ACK标志的数据包表示握手结束

连接建立后,就可以开始传输数据了。
TCP 连接其实是接收端和客户端保存的一份关于对方的信息,如果 IP 地址、端口号等。
同样的,在断开连接时,TCP 会采用四次挥手策略来保证接数据发送安全和完整:
当发送端的数据都传输完成后,发送端会向接收端发送连接释放报文
FIN。需要注意的是发送端发送FIN报文后,只是不能发送数据了,但是能正常接收数据的。接收端收到发送端的
FIN报文后,回复包含ACK标志的确认报文,此时接收端处于等待关闭状态,而不是马上给发送端发送FIN报文,因为可能还有数据没有发送完成。接收端的数据发送完成后,发送带有
ACK和FIN标志的连接释放报文给发送端。发送端收到接收端的
FIN报文后,向接收端发送ACK报文。此时接收端并不是立刻释放TCP连接,而是等待 2MSL( 最大报文段寿命的两倍时长 )后才释放连接。但是接收端一旦收到发送端的ACK报文后就会立马释放连接。

TCP 和 UDP
TCP 是面向连接的传输控制协议,而 UDP 提供了无连接的数据报服务;
TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;
UDP 具有较好的实时性,工作效率较 TCP 协议高;
UDP 段结构比 TCP 的段结构简单,因此网络开销也小。
TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。比如 HTTP 运用 TCP 进行数据的传输。