# TCP/IP参考模型

# 来源

TCP/IP参考模型被所有广域计算机网络的鼻祖ARPANET所采用,而且被其集成这——全球范围内的Internet所采用。
ARPANET是由美国国防部资助的一个研究性网络。它通过租用的电话线,将几百所大学和政府部门的计算机设备连接起来。后来,当卫星和无线网络也要加入时,发现原来的协议在与它们互连时遇到了很大的麻烦,因而需要一种心得参考体系结构。所以,以无缝的方式将多个网络连接起来是从一开始就制定的主要目标之一。这个体系结构后来被称作TCP/IP参考模型。

# 分层

  1. 链路层(link layer)
  2. 互联网层(internet layer)
  3. 传输层(transport layer)
  4. 应用层(application layer)

# 各层解释

# 链路层

TCP/IP参考模型选择了数据包交换网络,它以一个可运行在不同网络之上的无连接网络层为基础。链路层是模型中最低层,该层描述了链路必须完成什么功能才能满足无连接的互联网络层的需求,比如串行线和经典以太网链路。
其实这不是一个真正意义上的层,而是主机与传输链路之间的一个接口。

# 互联网层

互联网层是将整个网络体系结构贯穿在一起的关键层,大致对应OSI的网络层。该层的任务是允许主机将数据包注入到任何网络,并且让这些数据包独立地到达接送方(接收方可能在不同的网络上)。
互联网定义了官方的数据包格式和协议,该协议称为因特网协议,与之相伴的还有一个辅助协议,称为因特网控制报文协议(ICMP,Internet Control Message Protocol)。很显然数据包路由是这里最主要的问题。

# 传输层

设计目标是允许源主机和目标主机上的对等实体进行对话,犹如OSI的传输层一样。这里定义两个端到端的传输协议:

  1. 传输控制协议(TCP,Transport Control Protocol),他是一个可靠的面向连接的协议,允许从一台机器发出的字节流正确无误地交付到互联网的另一台机器。还负责处理流量控制,以便确保发送方和接收方传输报文不会拥挤。
  2. 用户数据报协议(UDP,User Datagram Protocol),它不可靠,无连接。适用于追求一定自由度的,不想要TCP的有序性和流量控制功能的应用程序。例如那些一次性的基于客户机-服务器类型的“请求-应答”查询应用,以及那些即时交付比精确交付更加重要的应用,比如传输语音或者视频。

# 应用层

包含所有高层协议,没有表示层和会话层。

# 一些需要学习的协议

应用层: HTTP、SMTP、RTP、DNS
传输层: TCP、UDP
互联网层: IP、ICMP
链路层: DSL、SONET、802.11、Ethernet

# OSI参考模型和TCP/IP参考模型的比较

# 共同点

两者都是以协议栈概念为基础,并且协议栈中的协议彼此相互独立。两个模型的各个层的功能也大致相似。

# 差异

# OSI参考模型

首先,OSI参考模型的核心概念是

  1. 服务
  2. 接口
  3. 协议

区分了这些概念的同时,OSI每一层都为上一层执行某些服务,这些服务定义了这一层该做什么,每一层的接口告诉上面的进程如何访问本层。同时每一层的对等协议不会影响到上面各层。可见,OSI和现代的面向对象的思想很一致。 OSI在协议出现之前就已经产生了,因此是现有模型后有协议,自由度较高,通用性强,但也面对在实际构建网络过程中,不同的网络难以有统一的规范问题。
而TCP/IP相反的是先有协议,它只是一个协议的描述而已,因此协议和模型高度吻合。问题也很明显,就是无法描述其他协议的非TCP/IP网络。
另一个区别是,OSI模型同时支持无连接和面向连接的通信,但传输层只支持面向连接的通信。而TCP/IP模型网络层只支持无连接,但是传输层同时支持两种通信模式。这样给用户一个选择机会,对于简单的”请求-应答“协议很重要。
但实际应用中,OSI、TCP/IP二者都有很大的弊端,感兴趣的朋友可以深入探讨。在这里不做过多赘述。