TCP/IP.part2.TCP/IP基础知识

前言

TCP/IP相关内容第二部分,包含:

  • TCP/IP出现背景及标准化
  • 互联网基础知识
  • TCP/IP协议分层模型
  • TCP/IP分层模型与通信示例

一、TCP/IP出现背景及标准化

1、出现背景及历史

TCP/IP的出现从军用技术的分组交换网络开始,到ARPANET,到TCP/IP的诞生,到UNIX系统的普及(其内嵌了TCP/IP协议的实现,带动TCP/IP发展),再到以ISP(网络服务供应商)为主的商用互联网服务,经历了大约60年的发展。

2、TCP/IP的标准化

首先要明确的是,TCP/IP不是TCP与IP这两个协议,而是一个利用IP进行通信时所必需的用到的协议群,包括:

  • 网际协议:IP、ARP或ICMP
  • 传输协议:TCP或UDP
  • 应用协议:TELNET、FTP、SMTP、SNMP以及HTTP等
  • 路由控制协议: RIP、OSPF、BGP
    一般是OSI模型三层及以上对应地协议,数据链路层和物理层的功能在TCP/IP中往往认为是透明的。

TCP/IP是由IETF组织制定,其特点是“先实现并广泛使用,再制定规范”,因此具有很高的实用性。协议标准记录在RFC文档中并在互联网中发布。采用STD方式管理编号。

二、互联网基础知识

互联网是一个专有名词,其就是指采用TCP/IP协议建立起来的“网际网”。
互联网中的每个网络都由“骨干网”和“末端网”组成。每个网络之间通过NOC(网络操作中心)相连。
连接互联网的服务是由ISP或区域网提供的。用户需要向他们提出申请。

三、TCP/IP协议分层模型

TCP/IP分层与OSI参考模型不太相同,其只包含五层。

1、硬件(物理层)

最底层负责传输数据的硬件,相当于以太网或电话线路、光纤等物理层设备。其没有一个既定的指标,TCP/IP是在网络互联的设备能够通信的前提下有意义。

2、网络接口层(数据链路层)

把数据链路当成网络层的接口看待。其相当于让NIC(网卡)起作用的“驱动程序”,驱动程序是在操作系统与硬件之间起桥梁作用的软件。数据链路层负责把长得一样的IP包根据不同的数据链路(如以太网、FDDI等)封装成不同的适合传输的数据帧,告诉物理层该怎么传输,其实就是把上层的指令告诉硬件设备该怎么操作,像一个驱动程序。

3、互联网层(网络层)

互联网层与传输层通常由操作系统提供,而应用层就由各个软件提供。像网桥、集线器、中继器这些底层设备就没必要实现TCP或IP的功能。
网络层常用的协议包括:

  1. IP,使用IP地址作为主机标识,是分组交换的一种协议,面向无连接,非可靠。
  2. ICMP,用来诊断网络的健康状况。
  3. ARP,从分组数据包中的IP地址解析出MAC地址的一种协议。

4、传输层

保证应用程序之间实现可靠通信,采用端口号识别应用程序。
常用协议包括:

  1. TCP,面向有连接的传输协议,在发送数据包之前要确认连接,有时需要至少7次发包和收包才能确定是连接上的。
  2. UDP,面向无连接的,不管对端是否收到或是否存在,不用在发数据包之前建立连接,想发就发。

5、应用层(会话层+表示层+应用层)

TCP/IP应用架构都属于客户端/服务端模型,客户发送请求,服务端响应请求。其通常是通过计算机的客户端软件来实现的。
举例一些功能的分类,每个功能会有一个协议或多个来实现:

  1. WWW(万维网)
    是一种互联网上数据读取的规范,远端服务器根据你的输入响应返回各种信息,呈现到浏览器页面上。很多浏览器软件采用的通信协议是HTTP(应用层),传输数据格式为HTML(表示层)。
  2. 电子邮件
    采用SMTP协议(应用层),MIME协议(表示层)。
  3. 文件传输
    采用FTP协议(应用层),传输过程中可以选择用二进制方式或是文本方式。不同的操作系统文本方式还不一样,如MacOS、Windows、Unix的换行符都不一样,但是通过表示层会自动修改为同一的,这样不同的OS之间也可以正确传输了。
  4. 远程登录
    常用SSH或TELNET两种协议(应用层)。
  5. 网络管理
    可以对联网的硬件设备进行远程修改配置,检查运行。采用SNMP协议(应用层),网络管理终端叫做“管理器”,被管理的主机、网桥、路由器等设备叫做“代理”。

四、TCP/IP分层模型与通信示例

每一层都有“包”这个概念,数据链路层叫“帧”,“数据报”是IP、UDP中的,“段”是TCP中的,“消息”是应用层中的。
一个包有两部分:协议用到的首部和上层传过来的数据。数据包的首部代表了协议的规范。
应用层的数据传到TCP层,会在数据前段加上TCP首部,包含源、目的端口号,序号(包在整个数据中的位置),和校验和。
TCP层的数据传到IP层,会加上IP首部,包含IP地址,和用来判断其后面数据是TCP还是UDP的信息。
继续往下传到网络接口中,以太网首部将包含MAC地址,以及标致以太网类型的以太数据的协议。在包的最后添加FCS,用于判断数据是否被噪声破坏。

每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。 提供上一层协议类型信息可以告诉本层在收到发送给自己的数据后,去掉包头之后剩下的数据该交由哪个程序去处理,如网络层是给IP处理程序还是ARP还是ICMP。传输层是根据端口号判断下一层是用哪个程序。如果收到的是一个无法识别的协议类型,则会丢弃数据。

某一台计算机的某一层在接收到数据后,会先判断是不是发送给自己的,若不是,抛弃数据,若是,才会去解析数据包,去掉头部发给上一层正确的处理程序,继续重复前面的判断。例如路由的过程,路由器收到数据包后,发现目的MAC地址是指向自己的,与是去掉链路层的包头发到上层网络层,但网络层发现目的IP不是自己,证明要转发(只有IP地址也指向自己,才会继续往上给传输层),经查表后找到下一跳路由器的MAC地址,再根据下面要传输的数据链路封装好新的帧(根据下一个数据链路的格式),更换新的MAC地址,再通过下一个链路转发。

您的支持是我创造源源不断地动力