TCP/IP协议是在ARPANET基础上发展起来的。在实现ARPANET之后,原来的协议在使用时遇到了很多的问题 ,所以需要一种新的参考体系结构。同时为了完成以无缝方式将多个网络连接起来,ARPANET体现结构演变成为TCP/IP参考模型。通过一张图展示出来运行过程。
1TCP/IP协议参考模型
TCP/IP协议是按照一定标准被划分为4层的,从底层到顶层依次是:主机与网络层,互联网层、传输层、应用层。与OSI模型的的对应关系如下图。
1.1主机与网络层
TCP/IP协议参考模型中并没有明确确定这一层的功能与内容,而是指出主机必须通过某个协议与网络连接,但是不同的主机、不同的网络使用的协议可以不同。
1.2互联网层
互联网层是以一个无连接的网络为基础,是基于分组交换网络的关键层。该层的任务是允许主机将分组数据发送到任何网络上,并且让这些分组独立的达到目的端。分组到达的顺序可能与分组被发送的顺序不同。在这种情况下,为了保证顺序的存在,必须重新排列分组,这个任务由传输层来做。
互联网层定义了正式的分组格式和协议,该协议称为IP协议。互联网层的任务是将IP分组传递到该去的地方。IP协议内容后续讲解。
1.3传输层
该层的设计目的是允许源主机和目标主机的对等体之间可以进行对话。这一层定义了两个端到端的传输协议,第一个是TCP协议。
TCP协议是一个可靠的面向连接的协议,允许从一台机器发送字节流正确无误地被传输到互联网上的另一台机器上。TCP协议先将输入的字节流分割成单独的小报文,然后将这些小报文传递到接收端。接收端上负责接受的TCP进程将报文重新装配成一个完整的报文。TCP也负责进行流控制,该功能可保证发送方不会发送太多的报文,以免接收方无法承受而被淹没。
传输层的第二个协议是UDP协议,该协议的是一个不可靠的无连接的协议。UDP协议经常用于只需要一次客户机/服务器类型的请求-应答查询等。
1.4应用层
应用层包含了所有高层协议。最常见的协议包括TELNET,FTP和SMTP等,经过多年的发展,又加入了很多的协议,如下图:
2.IP协议
从IP协议着手学习TCP/IP协议是最恰当的方式。IP协议包括IP数据报的格式、IP地址和子网三个部分。
2.1IP数据格式
每个IP数据包包含一个头部和一个正文部分。头部是拥有20个字节的定长部分和一个可选的变成部分。如下图
- 版本域记录了数据属于哪一个版本的协议,目前存在两个版本IPV4和IPV6,我们使用较多的是IPV4。
- 头部的长度不固定,所以头部的IHL域指明了该头部的长度,一般以4字节为长度单位。IHL的最小值是5,这表明该头部无可选项;最大值是15,表明该头部的最大长度为60字节,可选长度最大为40字节。
- 服务器类型域的用途是区分不同的服务器类型。可靠性和速度都是该选项追求的目标。对于语音服务来说,速度比准确性重要,但是对文件传输来讲,准确性比速度重要。在服务器类型域被设定的时候,该域包含了一个3位的Precedence域和3个标志位D、T和R。PreceDence域是一个从0(普通级别)到7(网络控制分组)的优先级。通过三个标志位,源主机可以指定其最关心的是延迟、吞吐量还是可靠性。
- 总长度域包含额该数据报文中所有的内容,即头和数据。最大长度是65535。
- 标识域的用途是让目标主机确定一个新达到的分段属于哪一个数据报。同一个数据报的所有分段包含同样的标识域。
- 标志域是一个未使用的位,其后是两个1位域。DF域代表不分片。这是针对路由器的一条命令,该命令让路由器不再分割数据报文,因为目标主机无法将分段重组会原来的数据报文。MF域代表更多的域,除了最后一个分段之外其余的分段必须设置这一位,该域的用途是让接收方知道什么时候一个数据报文的所有分段都已到达了。
- 分段偏移域指明了该分段在当前数据报文中的位置。除了一个数据报的最后一个分段之外,其余所有的 分段必须是8字节的倍数,这里的8字节是一个基本单位。由于该域共有13位,所以每个数据报最多有8192个分段。因此最大的数据报文长度为65536字节,比总长度域还要大1.
- 生存期(TTL)域是限制分组生存期的计数器。这里的计数时间单位为妙,因此最大的生存期为255秒。在每一跳上该计数器必须被递减,而且当数据报文在一台路由器上排队时间较长时,该计数器必须被多倍递减。当期被递减到0时,分组被丢弃。路由器会返回一个警告的分组。生存期的主要作用是避免数据报文长时间逗留在网络中。
- 协议域指明了网络层在完成一个完整的数据报文后该如何处理的过程。TCP和UDP是该域的可选项。
- 头部校验和域只校验头部。这样的校验和对于检测因路由器而发生的错误非常有用。一般的算法是当数据到达时,所有的16位累加起来,然后再取结果的补码。算法可以理解为当数据到达后,头部校验码的计算结果应该为0。
- 原地址和目标地址域表示网络号和主机号,在下一小节中介绍IP地址。