参考文档:《linux网络编程》
TCP/IP 实际上一个一起工作的通信家族,为网际数据通信提供通路。为讨论方便可将TCP/IP 协议组大体上分为三部分:
1.Internet 协议(IP)
2.传输控制协议(TCP)和用户数据报文协议(UDP)
3.处于 TCP 和 UDP 之上的一组协议专门开发的应用程序。它们包括:TELNET,文件传送协议(FTP) ,域名服务(DNS)和简单的邮件传送程序(SMTP)等许多协议。
TCP/IP 和 OSI 网络模型的分层图
第一部分也称为网络层。包括 Internet 协议(IP) 、网际控制报文协议(ICMP )和地址识别协议(ARP).
Internet 协议(IP)
该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的地主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。
网际控制报文协议(ICMP )
它实际上不是 IP 层部分,但直接同 IP 层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文。
地址识别协议(ARP)
ARP 实际上不是网络层部分,它处于 IP 和数据链路层之间,它是在 32 位 IP 地址和 48位局域网地址之间执行翻译的协议。
第二部分是传输层协议。包括传输控制协议和用户数据报文协议。
传输控制协议(TCP)
由于 IP 提供非连接型传递服务,因此 TCP 应为应用程序存取网络创造了条件,使用可靠的面向连接的传输层服务。该协议为建立网际上用户进程之间的对话负责。此外,还确保两个以上进程之间的可靠通信。它所提供的功能如下:
1.监听输入对话建立请求
2.请求另一网络站点对话
3.可靠的发送和接收数据
4.适度的关闭对话。
用户数据报文协议(UDP)
UDP 提供不可靠的非连接型传输层服务,它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话。此外,该协议还不使用TCP 使用的端对端差错校验。当使用 UDP 时,传输层功能全都发回,而开销却比较低。它主要用于那些不要求 TCP 协议的非连接型的应用程序。例如,名字服务和网络管理。最后是应用程序部分。这部分包括 Telnet,文件传送协议(FTP 和 TFTP) ,简单的文件传送协议(SMTP)和域名服务(DNS)等协议。
TCP/IP 使用了主干网络,能连接各种主机和 LAN 的多级分层结构,局部用户能方便的联网,不致影响到整个网络系统。此外这种结构还有利于局部用户控制操作和管理。
TCP/IP 具有两个主要功能。第一是 IP 在网络之间(有时在个别网络内部)提供路由选择。第二是 TCP 将 TP 传递的数据传送的接收主机那的适当的处理部件。
========================================
Internet 协议(IP )
IP 的主要目的是提供子网的互联,形成较大的网际,使不同的子网之间能传输数据。IP 规定包如何从一个子网路由选择到另一个子网。自治系统中的每个节点具有唯一的
IP 地址。IP 使用本身的帧头和检查来确保数据报文的正确传送。
IP 主要有以下四个主要功能:
(1)数据传送
(2)寻址
(3)路由选择
(4)数据报文的分段
封装在 Ethernet 帧中的 IP 头
========================================
传输控制协议(TCP)
TCP 是重要的传输层协议,它和 UDP 不同,传输层软件 TCP 的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而
且完成数据的可靠传输。
TCP 是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。分配给包那每个字节的顺序编号可以合理的重复。
为可靠的完成数据传输任务,TCP 将报文或数据分成可管理的长度并加上 TCP 头。
TCP 头信息
TCP 提供的主要服务有:
(1)建立、维持和终结两个进程之间的连接。
(2)可靠的包传递(经过确认过程)。
(3)编序包(可靠的数据传送)。
(4)控制差错的机制。
(5)通过使用端口,允许在个别的源和目的地主机内部实现和不同进程多重连接的能力。
(6)使用全双工操作的数据交换。
========================================
用户数据报文协议(UDP)
UDP 也是 TCP/IP 的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时,它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,
也不会向发送方发出差错报文。UDP 的主要作用是分配和管理端口编号,以正确无误的识别运行在网络站点上的个别应用程序。由于它执行功能时具有低的开销,因而执行速度比 TCP 快。它多半用于不需要可靠传输的应用程序,例如网络管理域,域名服务器等。
任何与 UDP 相配合作为传输层服务的应用程序必须提供确认和顺序系统,以确保包是以发送它们的同样顺序到达。也就是说,使用 UDP 的应用程序必须提供这类服务。
UDP 头