下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。 物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,尽可能屏蔽掉具体传输介质和物理设备的差异。 数据链路层主要功能:建立和管理节点间的链路。通过各种控制协议,通过差错控制、流量控制方法,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。 具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。 网络层主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。 路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。 传输层主要任务: 传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。 处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。 监控服务质量。 会话层主要任务: 会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。 会话流量控制:提供会话流量控制和交叉会话功能。 寻址:使用远程地址建立会话连接。l 出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。 表示层主要功能:处理用户信息的表示问题,如数据编码、数据格式转换、加密解密、压缩和解压缩等 应用层主要功能: 用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。 实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。
TCP/IP协议的工作流程如下: ●在源主机上,应用层将一串应用数据流传送给传输层。 ●传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。 ●在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。 ●链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。 ●在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层。 ●网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层。 ●传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息。 ●在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。 ******************************************************************** 既然每个以太网设备在出厂时都有一个唯一的MAC地址了,那为什么还需要为每台主机再分配一个IP地址呢?或者说为什么每台主机都分配唯一的IP地址了,为什么还要在网络设备(如网卡,集线器,路由器等)生产时内嵌一个唯一的MAC地址呢?主要原因有以下几点:(1)IP地址的分配是根据网络的拓朴结构,而不是根据谁制造了网络设置。若将高效的路由选择方案建立在设备制造商的基础上而不是网络所处的拓朴位置基础上,这种方案是不可行的。(2)当存在一个附加层的地址寻址时,设备更易于移动和维修。例如,如果一个以太网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。(3)无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。下面我们来通过一个例子看看IP地址和MAC地址是怎样结合来传送数据包的。 IP地址和MAC地址相同点是它们都唯一,不同的特点主要有: 1. 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。 2. 长度不同。IP地址为32位,MAC地址为48位。 3. 分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。 4. 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 ******************************************************************** TCP/IP协议栈四层模型介绍: 链路层
- 将数据封装为帧(frame),帧是数据链路层的传送单位;
- 控制帧的传输,包括处理传输差错,调节发送速率与接收方相匹配;
- 在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
- 每一端必须知道对端的 IP 地址,没有办法把本端 IP 地址传递给对端;
- 数据帧中无类型字段,当一条串行线路使用 SLIP 时则不能使用其他协议;
- SLIP 数据帧中无 checksum,只能依靠上层协议来发现和纠正错误。
- 不可靠:IP 协议不能保证数据包能成功地到达目的地,它仅提供传输服务。当发生某种错误时,IP 协议会丢弃该数据包。传输的可靠性全由上层协议(如TCP)来提供。
- 无连接:IP 协议对每个数据包的处理是相互独立的。这也说明, IP 数据包可以不按发送顺序接收。
- 1、搜索路由表,如果能找到和目的 IP 地址完全一致的主机,则将 IP 数据报发向该主机;
- 2、搜索路由表,如果匹配主机失败,则匹配同子网的路由器(这需要子网掩码的协助)。如果找到路由器,则将 IP 该数据报发向该路由器;
- 3、搜索路由表,如果匹配同子网路由器失败,则匹配同网络号路由器,如果找到路由器,则将该 IP 数据报发向该路由器;
- 4、如果以上都失败了,就搜索默认路由,如果默认路由存在,则发报;
- 6、如果都失败了,就丢掉这个包;
- 7、接收到数据报的路由器再按照它自己的路由表继续转发,直到数据报被转发到目的主机;
- 8、如果在转发过程中,IP 数据报的 TTL(生命周期)已经被减为 0,则该 IP 数据报就被抛弃。
- 当主机要发送一个 IP 数据报的时候,会首先查询一下自己的 ARP 缓存表;
- 如果在 ARP 缓存表中找到对应的 MAC 地址,则将 IP 数据报封装为数据帧,把 MAC 地址放在帧首部,发送数据帧;
- 如果查询的 IP-MAC 值对不存在,那么主机就向网络中广播发送一个 ARP 请求数据帧,ARP 请求中包含待查询 IP 地址;
- 网络内所有收到 ARP 请求的主机查询自己的 IP 地址,如果发现自己符合条件,就回复一个 ARP 应答数据帧,其中包含自己的 MAC 地址;
- 收到 ARP 应答后,主机将其 IP - MAC 对应信息存入自己的 ARP 缓存,然后再据此封装 IP 数据报,再发送数据帧。
- 常见的应用程序占用的系统端口号:
应用层协议: | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
系统端口号: | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
- (1).UDP 是无连接的,发送数据之前不需要建立连接(而 TCP 需要),减少了开销和时延。
- (2).UDP尽最大努力交付,不保证交付可靠性。
- (3).UDP 是面向报文的,对于应用层交付的数据,只做很简单的封装(8 字节 UDP 报头),首部开销小。
- (4).UDP 没有拥塞控制,出现网络拥塞时发送方也不会降低发送速率。这种特性对某些实时应用是很重要的,比如 IP 电话,视频会议等,它们允许拥塞时丢失一些数据,因为如果不抛弃这些数据,极可能造成时延的累积。
- (5).UDP 支持一对一、一对多、多对一和多对多的交互通信。
- (1) TCP 提供 可靠的 数据传输服务,TCP 是 面向连接的 。应用程序在使用 TCP 通信之前,先要建立连接,TCP建立连接三次握手,释放连接四次握手。
- (2) TCP 连接是 点对点 的,一条 TCP 连接只能连接两个端点。
- (3) TCP 提供可靠传输,无差错、不丢失、不重复、按顺序。
- (4) TCP 提供 全双工 通信,允许通信双方任何时候都能发送数据,因为 TCP 连接的两端都设有发送缓存和接收缓存。
- (5) TCP 面向 字节流 。TCP 并不知道所传输的数据的含义,仅把数据看作一连串的字节序列,它也不保证接收方收到的数据块和发送方发出的数据块具有大小对应关系。
- (1) 客户端发出请求连接报文段,其中报头控制位 SYN=1,初始序号 seq=x。客户端进入 SYN-SENT(同步已发送)状态。
- (2) 服务端收到请求报文段后,向客户端发送确认报文段。确认报文段的首部中 SYN=1,ACK=1,确认号是 ack=x+1,同时为自己选择一个初始序号 seq=y。服务端进入 SYN-RCVD(同步收到)状态。
- (3) 客户端收到服务端的确认报文段后,还要给服务端发送一个确认报文段。这个报文段中 ACK=1,确认号 ack=y+1,而自己的序号 seq=x+1。这个报文段已经可以携带数据,如果不携带数据则不消耗序号,则下一个报文段序号仍为 seq=x+1。
- (1) 此时 TCP 连接两端都还处于 ESTABLISHED 状态,客户端停止发送数据,并发出一个 FIN 报文段。首部 FIN=1,序号 seq=u(u 等于客户端传输数据最后一字节的序号加 1)。客户端进入 FIN-WAIT-1(终止等待 1)状态。
- (2) 服务端回复确认报文段,确认号 ack=u+1,序号 seq=v(v 等于服务端传输数据最后一字节的序号加 1),服务端进入 CLOSE-WAIT(关闭等待)状态。现在 TCP 连接处于半开半闭状态,服务端如果继续发送数据,客户端依然接收。
- (3) 客户端收到确认报文,进入 FIN-WAIT-2 状态,服务端发送完数据后,发出 FIN 报文段,FIN=1,确认号 ack=u+1,然后进入 LAST-ACK(最后确认)状态。
- (4) 客户端回复确认确认报文段,ACK=1,确认号 ack=w+1(w 为半开半闭状态时,收到的最后一个字节数据的编号) ,序号 seq=u+1,然后进入 TIME-WAIT(时间等待)状态。
- (1) TCP 报文段的长度可变,根据收发双方的缓存状态、网络状态而调整。
- (2) 当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。
- (3) 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。这就是稍后介绍的超时重传。
- (4) TCP 将保持它首部和数据的检验和。如果通过检验和发现报文段有差错,这个报文段将被丢弃,等待超时重传。
- (5) TCP 将数据按字节排序,报文段中有序号,以确保顺序的正确性。
- (6) TCP 还能提供流量控制。TCP 连接的每一方都有收发缓存。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
- FTP 只提供文件传输的基本服务,它采用 客户端—服务器 的方式,一个 FTP 服务器可同时为多个客户端提供服务。
- 在进行文件传输时,FTP 的客户端和服务器之间会建立两个 TCP 连接:21 号端口建立控制连接,20 号端口建立数据连接。
- FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。
- 点击一个链接后,浏览器向服务器发起 TCP 连接;
- 连接建立后浏览器发送 HTTP 请求报文,然后服务器回复响应报文;
- 浏览器将收到的响应报文内容显示在网页上;
- 报文收发结束,关闭 TCP 连接。
- 1xx 表示通知信息,如收到或正在处理。
- 2xx 表示成功接收。
- 3xx 表示重定向。
- 4xx 表示客户的差错,如 404 表示网页未找到。
- 5xx表示服务器的差错,如常见的 502 Bad Gateway。
- TFTP 可用于 UDP 环境;比如当需要将程序或者文件同时向许多机器下载时就往往需要使用到 TFTP 协议。
- TFTP 代码所占的内存较小,这对于小型计算机或者某些特殊用途的设备来说是很重要的,TFTP 具有更多的灵活性,也减少了开销。