TCP/IP入门经典_总结

本文是对《TCP/IP入门经典》前五章的梳理总结或者说一个读书笔记,主要说明了TCP/IP协议的基础知识、四层模型的结构、每层模型用到的协议,协议的主要内容等。由于篇幅关系,只写到了四层协议中的网络访问层和网际层,计划后续补全。阅读本文可以让你对于互联网的运行基础建立一个大概的印象,为深入了解TCP/IP协议打下基础。

by MaryTien from http://luckymona.github.io

一、什么是TCP/IP

1.基础知识

网络是计算机或类似计算机的设备之间通过常用传输介质进行通信的结合。网络协议就是一套通用功能规则,用来帮助定义复杂数据传输的过程。TCP/IP及其相关协议定义了完整的网络通信过程,被称为协议簇。

  • TCP/IP标准定义了TCP/IP网络的通信规则;
  • TCP/IP实现是一个软件组件,计算机通过它参与到TCP/IP网络中。
  • TCP/IP标准的目的是确保所有厂商提供的TCP/IP实现都能很好地兼容。

TCP/IP起源于美国国防部的ARPAnet网络,成为Internet比较成功的一部分,并提供两个重要特性:

  • 端点验证:两台实际通信的计算机都称为端点,位于信息链的末端,负责确认和验证传输,没有监视通信的中心模式
  • 动态路由选择

个人计算机接入Internet的方法:

  • 使用modem拨号系统,它是通过一条电话线来提供网络连接的

  • 与办公室其他计算机组成局域网,使用专门的网关进行协议转换,接入Internet

TCP/IP的特性,也是TCP/IP的核心:

  • 逻辑编址

  • 路由选择

  • 名称解析

  • 错误控制和流量控制

  • 应用支持

缩写:

  • LAN:Local Area Network局域网
  • TCP:Transmission Control Protocal 传输控制协议
  • IP:Internet Protocal 网络协议

2. 逻辑编址

术语:

  • 以太网:Ethernet 一种基带局域网规范,当今最通用的局域网标准
  • VPN:Virtual Private Network 虚拟专用网络
  • NAT:Network Address Transition网络地址转换

网络适配器即网卡,出厂时都分配有一个物理地址,称为MAC地址,在LAN中,低层的与硬件相关的协议使用MAC地址在物理网络中传输数据。网卡监听LAN中的每一个传输,以确定消息是否发送到它的物理地址。

网管使用如路由器的设备将网络分段,以减少网络拥堵。在路由式网络中,管理员需要一种细分网络到更小的子网的方法,TCP/IP通过逻辑编址提供了子网化能力,逻辑地址是一个通过网络软件来配置的地址,称为IP地址。

IP地址包括:

  • 网络ID:识别网络

  • 子网ID:识别网络中的子网

  • 主机ID:识别子网中计算机的主机

TCP/IP中使用ARP和RARP作IP地址与MAC地址的转换。

  • ARP:Address Resolution Protocal地址解析协议

  • RARP:Reverse- 逆向地址解析协议

3.路由选择

路由器能够读取IP地址,将一个局域网连接到一个大型的网络上,可以减少网络拥塞。

TCP/IP包括了定义路由器如何找到网络路径的协议。

网桥、交换机和智能HUB等设备也都可以减少网络拥塞,但使用MAC地址而不是IP,因此不能执行复杂路由功能。

4.名称解析

TCP/IP提供IP的另一种结构,为域名系统,DNS Domain Name System,域名到IP的映射称为名称解析。域名服务器是一个专用计算机,存储域名和IP的映射表。

5.错误控制和流量控制

TCP/IP提供了确保数据在网络中可靠传送的特性。传输层定义了许多错误控制、流量控制和确认功能。

6.应用支持

一台计算机上可以运行多种网络程序,协议软件必须提供方法来判断接收到的数据包属于哪个程序。在TCP/IP中国年,这个通过系统的逻辑通道实现从网络到应用程序的接口被称为端口。可以把端口想象为计算机中的逻辑管道。

7.标准组织和RFC

  • ICNN:互联网名称与数字地址分配机构
  • RFC:Request For Comments 请求评议,一系列以编号排定的文件,收集有关互联网的相关信息,被称为网络知识圣经。www.rfc-editor.org可以找到RFC

二、TCP/IP的工作方式

1.TCP/IP模型

术语:

  • 网间:internetwork 指的是多个局域网互相连接形成的较大的网络

TCP/IP协议系统划分为不同层次的组件,分别实现特定的功能,称为TCP/IP模型:

  • 应用层:网络服务 + 应用编程接口 + 网络应用程序和功能

  • 传输层:TCP+UDP 提供流量控制、错误控制和确认服务,充当应用程序的接口

  • 网际层:IP+ARP 实现物理地址与逻辑地址的转换,提供路由功能,支持网间的数据传递;

  • 网络访问层:提供与物理网络连接的接口

2.OSI模型

网络协议体系的标准的七层模型,称为OSI模型:开放互联模型,与TCP/IP是相互独立的,经常被作为一种通用框架来理解各种协议系统。

在重要的传输层和网际层,OSI和TCP/IP模型是最相似的,这些层包含的组件最能体现网络协议之间的区别,所以很多协议根据其传输层和网络层进行命名。TCP/IP名称就来自于TCP(传输层协议)和IP(一个网际层协议)。

应用层、表示层、会话层 ===》 应用层

传输层 ===》 传输层

网络层 ===》 网际层

数据链路层、物理层 ===》 网络访问层

3.数据包

在数据发送过程中,其流程从TCP/IP四层模型堆栈的从上到下,每一层都把相关的信息(称为‘报头’)捆绑到实际数据上,包含包头信息和数据的数据包作为下一层的数据,再次被添加报头信息和重新打包。当数据到达目的计算机时,使用相关的过程一层层解包并最终使用其中的信息。

前一个过程像俄罗斯套娃,在物理网络中如以太网,数据在网络访问层杯分解为较小的单元,像把套娃分解为碎片,把这些碎片封装到很小的娃娃里,再把他们以1和0的模式表示。接收端收到这些1和0之后,重新组合为小娃娃,再重建整个套娃。

数据包在每一层的形式和名称:

  • 应用层的数据包称为消息

  • 传输层封装消息生成新的数据包,如果来自于传输层的TCP协议,就称为分段;如果来自UDP协议,就称为数据报

  • 网际层封装传输层的分段生成的数据包,也称为数据报

  • 网络访问层封装数据报生成的新数据包,称为,帧被访问层里的最低子层转化为比特流

TCP与UDP的区别:

  • TCP是面向连接的协议,与无连接协议相比,能提供更复杂的流量控制和错误控制。TCP能确保数据的发送质量,比UDP更可靠,但比UDP的速度慢,因为要额外进行错误检测和流量控制。
  • UDP是个无连接的协议,比TCP快,但是不可靠,它把错误控制的责任推给了应用。

三、TCP/IP模型之网络访问层

网络访问层主要管理着对网络硬件的访问。它定义了与网络硬件交互和访问传输介质的过程。是TCP/IP协议栈中变化最多、最复杂的一层。一定要牢记:逻辑IP地址只存在于软件之中。

网络体系:包含对物理网络的定义,及该物理网络上定义的通信规范,规范包含以下方面:访问方法、数据帧格式、布线类型、布线规则

网络访问层包含如下网络体系:

  • IEEE802.3 以太网 大多数办公室和家庭使用的基于线缆的局域网
    • IEEE802.11无线网络 即WIFI
      • IEEE802.16WiMAX 用于移动通信长距离无线网络技术
        • 点到点协议PPP Modem通过电话线连接的技术

3.1以太网

以太网是目前使用最广泛的局域网技术,在典型以太网上,所有计算机共享同个传输介质。使用CSMA/CD的方法(载波侦听多路访问/冲突检测),来判断计算机何时可以把数据发送到访问介质。

CSMA/CD可以比喻为一个有很多人的房间。若有人想讲话,首先要确认目前是否有人在讲话(这就是载波侦听)。若两人同时开始讲话,他们都会发现这个问题,从而停止讲话,等一段时间再开始讲话(这就是冲突检测)。

传统以太网在中低负载情况下运行良好,大负载下由于冲突增多而影响性能,现代以太网中会使用网络交换机对流量进行管理,以减少冲突。早期以太网中,所有计算机通过一条同轴线缆连接(就像电路串联),现代以太网中,每台计算机都连接到中央网络设备如交换机中,再由交换机接入Internet(就像电路串联)。

以太帧的传输过程:

网际层的数据==》{ 进入网络访问层:把数据分成块—>数据块打包成帧—>OSI模型物理层的底层组件把帧转换成比特流—>传输介质 }==》介质传输到别的网卡

以太帧中包含帧校验序列(FCS)FCS是校验数据传输的常见方式,发送方计算帧的循环冗余码校验值(CRC值),把这个值写到帧里。接收方计算机重新计算CRC,与FCS字段的值进行比较,如果两个值不相同,就表示传输过程中发生了数据丢失或改变,就需要重新传输这一帧。

四、TCP/IP模型之网际层

一个网段(如一个以太局域网)上的计算机能够使用网络访问层提供的MAC地址进行通信,网际层提供的协议负责局域网网段之外的传递,重要的协议包括IP、ARP和ICMP(Internet Control Message Protocal 即Internet控制报文协议)。

4.1寻址与发送

在网络访问层,像以太网网卡对于上层协议一点不了解的,它只监听是否受到了数据帧,发现其中目标地址与自己物理地址相符的帧,并把这个帧传给上层协议栈,这种使用物理寻址的方式适合单个局域网网段。但在路由式网络中,不能利用物理地址实现数据传输,因此TCP/IP隐藏了物理地址,以一种逻辑化、层次化的寻址方案对网络进行组织。这种逻辑寻址方案由网际层的IP协议维护,因而逻辑地址被称为IP地址。

在一个路由式网络中,TCP/IP软件使用如下策略在网络上发送数据:

  1. 如果目的地址与源地址在同个网段,源计算机直接把数据包发给目的计算机。IP地址被解析为物理地址,数据被直接发送到目的网卡

  2. 如果不在同个网段,就执行下列过程:

    a. 直接将数据报发到网关,网关是局域网中的一个设备(网关也算是一个路由器),能把数据报转发到其他网段。网关地址被ARP解析为物理地址,数据被发送到网关的网络适配器。

    b. 数据报通过网关被路由到较高级别的网段,再次重复上述过程,如果目的地址在这个新网段里,数据就被发送到目的,否则数据报就被发送到 另一个网关。

    c. 数据报经过一系列网关被转发到目的网段。目的IP地址被ARP解析为物理地址,数据被发送到目的网络适配器。

4.2网际协议(IP)

IP协议提供了一种分层的、与硬件无关的寻址系统,TCP/IP网络上的每个网络适配器都有一个唯一的IP地址。通常计算机只有一个IP地址,是因为只有一个网卡,但作为路由器或代理服务器的计算机必须有多个网卡,因此有多个IP地址。

IP地址包括两个部分:

  • 网络ID:像邮政编码,表明大致区域
  • 主机ID:像街道地址,表明区域内的准确位置
  1. IP报头字段

    每个IP数据报都以一个IP报头开始,源计算机的TCP/IP软件构造这个IP报头,目的计算机的TCP/IP软件利用IP报头中封装的信息处理数据。

    IP报头的最小长度是20字节,报头长度必须是32位字的整数倍,包含一系列字节,跳数代表数据报到达目的地之前必须经过的路由器的数量。

  2. IP寻址

    IP地址是一个32位的地址,分为4个8位段,常用点分十进制来简化32位二进制地址。

    IP地址分类:

    A类地址:前8位表示网络ID,后24位表示主机ID,0~127

    B类地址:前16位表示网络ID,后16位表示主机ID,128~191

    C类地址:前24位表示网络ID,后8位表示主机ID,192~223

    D类地址:用于多播,即把一个消息发送到网络的子网

    E类地址:实验性质的,一般不用于生产环境,240~247

    子网:

    划分子网的实质是借用主机ID中的一些位,把网络划分为更小的次级网络。

  3. 特殊的IP地址

    • 全0的主机ID表示网络本身,如129.152.0.0是指网络ID为129.152的B类网络。

    • 全1的主机ID表示广播,即向网络中全部主机发送消息,如129.152.255.255就是网络ID为129.152的B类网络的广播地址。

    • 地址255.255.255.255也可以用于网络上的广播。

    • 以十进制127开头的地址是还回地址,目的地址为还回地址的消息是由本地TCP/IP软件发送的,目的在于测试TCP/IP软件是否工作正常,如Ping功能,通常使用的还回地址是127.0.0.1

4.3 ARP(地址解析协议)与RARP(逆向-)

网段上每台主机在内存中都保存着一个ARP表或称为ARP缓存的表格,其中包含着网段上其他主机的IP地址与物理地址的对应关系。当主机需要向网段上的其他主机发送数据时,他会查看ARP缓存来获得目的物理地址。ARP缓存是动态变化的,如果目的IP在缓存中找不到,主机就会发送一个名为ARP请求帧的广播。网段上的其他主机接收到这个ARP请求,拥有这个目的IP地址的主机会向发出请求的主机发送自己的物理地址,这个目的IP与物理地址的对应关系会添加到请求主机的ARP缓存里面。

RARP常与BOOTP协议共同使用来启动无盘工作站。

BOOTP:用来远程启动计算机或其它网络设备的协议。

4.4 ICMP (Internet控制消息协议)

发送到远程计算机的数据通常会经过多个路由器,这些路由器在把数据传输到最终目的地的过程中可能会发生多种问题,路由器利用ICMP消息把问题通知给源IP,ICMP还有其他调试和排错的功能。ICMP是用于诊断和测试的协议。常见ICMP消息:

  • Echo Request(回显请求)和Echo Reply(回显应答)

    ICMP经常被用于测试,比如测试连接的ping命令实际上就是在使用ICMP。ping向某个IP地址发送一个数据报,并且要求目的计算机在响应中返回所发送的数据。ping实际使用的命令是ICMP的Echo Request和Echo Reply

  • Source Quench(源抑制)

  • Destination Unreachable(目的不可到达)

  • Time Exceeded(超时)

  • Fragmentation Needed(需要分段)

五、子网划分和CIDR

子网划分让数据报能够到达面向较小地址空间的路由器,最早源于地址分类系统。CIDR不需要关心地址类别。

5.1网络划分

像A类网络可以容纳超过1600万台主机,此时把网络划分为独立的物理网络能够增加网络的整体性能。子网划分就是在网络ID之下提供了第2层逻辑组织,路由器能把数据报发送给网络里的某个子网地址(一般对应于一个网段),当数据报到达子网之后,就会被ARB解析为物理地址。

TCP/IP规定借用主机ID的一些位来形成子网地址,用子网掩码来指明地址中的多少位用于子网ID,保留多少位作为实际的主机ID。子网掩码也是32位的二进制值,每一位代表IP地址的一个位,1表示IP地址中术语网络ID或子网ID的位,0表示属于主机ID的位。可以把子网掩码看作阅读IP地址的映射。

网管通常把子网掩码作为TCP/IP配置的参数分配给每个主机。一个子网内的所有主机应该具有相同的子网ID和子网掩码。

5.2无类别域间路由CIDR

IPv4即将耗尽,C类地址还有剩余,但地址空间比较小。使用一个CIDR前缀的值制定地址中作为网络ID的位数,这个前缀也被称为变长子网掩码VLSM,如在CIDR地址205.123.196183/25中,/25表示地址中25位用于网络ID,相应的子网掩码就是255.255.255.128。

CIDR不仅可以对网络划分子网,还让ISP(Internet Service Provider)或管理员能够把多个连续C类网络聚合成一个实体。此时CIDR前缀发挥了超网掩码的作用。如ISP可以分配204.21.128.0~204.21.255.255的全部C类地址,这些网络地址的前17位是一样的,因此超网掩码是255.255.128.0。

支持CIDR的路由表可以只使用一个CIDR条目204.21.128.0/17来引用这段地址的全部范围。该条目适用于与地址204.21.128.0的前17位匹配的所有地址。