HCNA --- TCP/IP基础

不同厂商、不同型号、运行不同操作系统的计算机之间能够通过TCP/IP协议栈实现相互之间的通信。TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代得到了广泛的应用。

由于各大厂商针对自己的协议生产出了不同的硬件和软件。各个厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。但由于多种协议的并存,也使网络变得越来越复杂;而且,厂商之间的网络设备大部分不能兼容,很难进行通信。为了解决网络之间的兼容性问题,帮助各个厂商生产出可兼容的网络设备,国际标准化组织ISO1984年提出了OSIRMOpenSystem Interconnection Reference Model,开放系统互连参考模型)。 OSI 参考模型很快成为计算机网络通信的基础模型。在设计OSI 参考模型时,遵循了以下原则:各个层之间有清晰的边界,实现特定的功能;层次的划分有利于国际标准协议的制定;层的数目应该足够多,以避免各个层功能重复。
OSI参考模型具有以下优点:简化了相关的网络操作;提供即插即用的兼容性和不同厂商之间的标准接口;使各个厂商能够设计出互操作的网络设备,促进标准化工作;防止一个区域网络的变化影响另一个区域的网络,结构上进行分隔,因此每一个区域的网络都能单独快速升级;把复杂的网络问题分解为小的简单问题,易于学习和操作。 

OSI参考模型分为七层,由下至上依次为第一层物理层(Physicallayer)、第二层数据链路层(Data link layer)、第三层网络层(Network layer)、第四层传输层(Transport layer)、第五层会话层(Session layer)、第六层表示层(Presentation layer)、第七层应用层(Application layer)。
通常, OSI参考模型第一层到第三层称为底层(Lower layer),又叫介质层(Media Layer),底层负责数据在网络中的传送,网络互连设备往往位于下三层,以硬件和软件相结合的方式来实现。OSI参考模型的第五层到第七层称为高层(Upper layer),又叫主机层(Host layer),高层用于保障数据的正确传输,以软件方式来实现。

OSI参考模型各个层次的基本功能如下:
物理层:在设备之间传输比特流,规定了电平、线速和电缆针脚。
数据链路层:将比特组合成字节,再将字节组合成帧,使用MAC地址来访问介质,检测差错。
网络层:提供逻辑地址,供路由器确定路径。
传输层:提供可靠或不可靠的数据传递以及进行重传前的差错检测。
会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
应用层OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。

由于OSI模型和协议比较复杂,所以并没有得到广泛的应用。而TCP/IP(Transfer Control Protocol/Internet Protocol,传输控制协议/网际协议)模型因其开放性和易用性在实践中得到了广泛的应用,TCP/IP协议栈也成为互联网的主流协议。TCP/IP模型同样采用分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系。TCP/IP模型与OSI参考模型的不同点在于TCP/IP把表示层和会话层都归入了应用层。TCP/IP模型由下至上依次分为网络接口层、网络层、传输层和应用层五个层次。

TCP/IP模型各个层次分别对应于不同的协议。 TCP/IP协议栈是数据通信协议的集合包含许多协议。其协议栈名字来源于其中最主要的两个协议TCP(传输控制协议)和IP(网际协议)。TCP/IP协议栈负责确保网络设备之间能够通信它是一组规则,规定了信息如何在网络中传输。

TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用PDU(协议数据单元)彼此交换信息,确保网络设备之间能够通信。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如传输层在上层数据中加入TCP报头后得到的PDU被称为Segment(数据段 );数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);最后,帧被转换为比特,通过网络介质传输。这种协议栈向下传递数据,并添加报头和报尾的过程称为封装。数据被封装并通过网络传输后,接收设备将删除添加的信息,并根据报头中的信息决定如何将数据沿协议栈上传给合适的应用程序,这个过程称为解封装。不同设备的对等层之间依靠封装和解封装来实现相互间的通信。
如图所示,主机A与主机B通信。主机A将某项应用通过上层协议转换上层数据后交给传输层,传输层将上层数据作为自己的数据部分并且在之前封装传输层报头,然后传递给网络层;网络层将从传输层收到的数据做为本层的数据部分,之前加上网络层的报头传递给数据链路层;数据链路层封装数据链路层的报头后传给物理层;物理层将数据转换为比特流通过物理线路传送给主机B。

主机B在物理层接收到比特流之后交给数据链路层处理;数据链路层收到报文后,从中拆离出数据链路层报文头并将数据传递给网络层;网络层收到报文后,从中拆离出IP报文头,交给传输层处理,传输层拆离传输头部后交给应用层。数据的封装和解封装都是一个逐层处理的过程,各层都会处理上层或下层的数据,并加上或剥离到本层的封装报文头。

物理层的主要功能如下:
•规定介质类型、接口类型、信令类型。
•规范在终端系统之间激活、维护和关闭物理链路的电气、机械流程和功能等方面的要求。
•规范电平、数据速率、最大传输距离和物理接头等特征。

物理层介质主要有同轴电缆(coaxical cable)、双绞线(twistedpair)、光纤(fiber)、无线电波(wireless radio)等。

数据链路层是物理层上的第一个逻辑层。数据链路层对终端进行物理编址,帮助网络设备确定是否将消息沿协议栈向上传递;同时还使用一些字段告诉设备应将数据传递给哪个协议栈如IP、 IPX等并提供排序和流量控制等功能。
数据链路层分为两个子层:逻辑链路控制子层(LLCLogic LinkControl sublayer),介质访问控制子层(MAC, Media AccessControl sublayer)。LLC子层位于网络层和MAC子层之间,负责识别协议类型并对数据进行封装以便通过网络进行传输。 LLC子层主要执行数据链路层的大部分功能和网络层的部分功能。如帧的收发功能,在发送时,帧由发送的数据加上地址和CRC校验等构成,接收时将帧拆开,执行地址识别、 CRC校验,并具有帧顺序控制、差错控制、流量控制等功能。此外,它还执行数据报、虚电路、多路复用等部分网络层的功能。MAC子层负责指定数据如何通过物理线路进行传输,并向下与物理层通信,它定义了物理编址、网络拓扑、线路规范、错误通知、按序传递和流量控制等功能。

数据链路层协议规定了数据链路层帧的封装方式。局域网常用的数据链路层协议有IEEE 802.2 LLC标准。广域网常用的数据链路层协议有: HDLC(High-level Data LinkControl,高级数据链路控制)、PPP(Point-to-Point Protocol,点到点协议)、FR(Frame Relay,帧中继)协议等。
HDLC是ISO开发的一种面向位同步的数据链路层协议,它规定了使用帧字符和校验和的同步串行链路的数据封装方法。PPP由RFC(Request For Comment) 1661定义, PPP协议由LCP(Link Control Protocol)、 NCP(Network Control Protocol)以及PPP扩展协议族组成。 PPP协议支持同步和异步串行链路,支持多种网络层协议。 PPP协议是VRP路由器串口默认数据链路层封装协议。帧中继是一种工业标准的、交换式的数据链路协议,通过使用无差错校验机制,加快了数据转发速度。
常用的数据链路层设备有以太网交换机

如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。 MAC地址由48个二进制位组成,通常我们用十六进制数字来表示。其中前6位十六进制数字由IEEE统一分配给设备制造商,后6位十六进制数由各个厂商自行分配。例如,华为的网络产品的MAC地址前六位十六进制数是0x00e0fc。
网络接口卡(NIC, Network Interface Card),又称网卡,有一个固定的MAC地址。大多数网卡厂商把MAC地址烧入ROM中。当网卡初始化时, ROM中的MAC物理地址读入RAM中。如果把新的网卡插入计算机中,计算机的物理地址就变成了新的网卡的物理地址。
值得注意的是,如果您的计算机插了两个网卡,那么就有两个MAC地址。所以有些网络设备可能有多个MAC地址。

网络层负责在不同的网络之间将数据包从源转发到目的地。数据链路层保证报文能够在同一网络(即同一链路)上的设备之间转发,网络层则保证报文能够跨越网络(即跨越链路)从源转发到目的地。网络层的功能可以总结为两条:提供逻辑地址 如果数据跨网络(即跨链路)传递,则需要使用逻辑地址用来寻址。
路由:将数据报文从一个网络转发到另外一个网络。常见的网络层设备有路由器,其主要功能是实现报文在不同网络之间的转发。

如图所示,位于不同网络(即不同链路)上的HostA和HostB之间相互通信。与HostA在同一网络(即同一链路)上的路由器接口接收到HostA发出的数据帧,路由器的链路层分析帧头确定为发给自己的帧之后,发送给网络层处理,网络层根据网络层报文头以决定目的地址所在网段,然后通过查表从相应的接口转发给下一跳,直到到达报文的目的地HostA。

常用网络层协议有:IP(Internet Protocol)、ICMP(InternetControl Message Protocol) 、ARP(AddressResolutionProtocol)、 RARP(Reverse Address Resolution Protocol)。
IP为网络层最主要的协议,其功能即为网络层的主要功能,一是提供逻辑编址,二是提供路由功能,三是报文的封装和解封装。ICMP、 ARP、 RARP协议辅助IP工作。
ICMP是一个管理协议并为IP提供信息服务, ICMP消息承载在IP报文中。
ARP实现IP地址到硬件地址的动态映射,即根据已知的IP地址获得相应的硬件地址。
RARP实现硬件地址到IP地址的动态映射,即根据已知的硬件地址获得相应的IP地址

上述提到的网络层地址即IP地址。IP地址是一个逻辑地址并非硬件地址,硬件地址是固化在NIC(Network Interface Card)中的,如前面提到的MAC地址,用于同一链路上设备相互通信;而IP地址则是用于不同网络(即不同链路)上的设备相互通信。IP地址长度为4个字节,由网络地址和主机地址两部分组成,常用点分十进制数字表示,如10.8.2.48。

传输层为上层应用屏蔽了网络的复杂性,并实现了主机应用程序间端到端的连通性,主要具备以下基本功能:将应用层发往网络层的数据分段或将网络层发往应用层的数据段合并,即封装和解封装。
建立端到端的连接,主要是建立逻辑连接以传送数据流。将数据段从一台主机发往另一台主机。在传送过程中通过计算校验和以及通过流控制的方式保证数据的正确性,流控制可以避免缓冲区溢出。部分传输层协议保证数据传送正确性。主要是在数据传送过程中确保同一数据既不多次传送也不丢失,以及保证数据包的接收顺序与发送顺序一致。

传输层协议主要包含传输控制协议TCP(Transfer ControlProtocol)和用户数据报文协议UDP (User Datagram Protocol)

TCP和UDP都使用IP作为其网络层协议,但是TCP和UDP为应用层提供的是截然不同的服务。
TCP提供面向连接的、可靠的字节流服务。面向连接意味着使用TCP协议作为传输层协议的两个应用之间在相互交换数据之前必须建立一个TCP连接。 TCP通过确认、校验、重组等机制为上层应用提供可靠的传输服务。但是TCP连接的建立以及确认、校验等机制都需要耗费大量的工作并且会带来大量的开销。
UDP提供简单的、面向数据报的服务。 UDP不保证可靠性,即不保证报文能够到达目的地。 UDP适用于更关注传输效率的应用,如SNMP、 Radius等, SNMP监控网络并断续发送告警等消息,如果每次发送少量信息都需要建立TCP连接,无疑会降低传输效率,所以诸如SNMP、 Radius等更注重传输效率的应用程序都会选择UDP作为传输层协议。另外,UDP还适用于本身具备可靠性机制的应用层协议。

应用层的主要功能如下:
•为用户提供接口、处理特定的应用。
•数据加密、解密、压缩、解压缩。
•定义数据表示的标准。

用层有许多协议,以下协议可以帮助您使用和管理 TCP/IP 网络:
FTP(File Transfer Protocol) 文件传输协议。用于传输独立的文件,通常用于交互式用户会话。
HTTP(Hypertext Transfer Protocol)超文本传输协议。 用于传输那些构成万维网上的页面的文件。
TELNET :远程终端访问。用于传送具有TELNET控制信息的数据。它提供了与终端设备或终端进程交互的标准方法,支持终端到终端的连接及进程到进程分布式计算的通信。
SMTP(Simple Message Transfer Protocol)简单邮件传输协议 和POP3(Post Office Protocol)邮局协议用于发送和接收邮件。
DNS(Domain Name Server)是一个域名服务的协议,提供域名到IP地址的转换,允许对域名资源进行分散管理。
TFTP(Trivial File Transfer Protocol)简单文件传输协议。设计用于一般目的的、高吞吐量的文件传输。
RIP(Routing Information Protocol)路由器用来在 IP 网络上交换路由信息的协议。
SNMP(Simple Network Management Protocol)用于收集网络管理信息,并在网络管理控制台和网络设备(例如路由器、网桥和服务器)之间交换网络管理信息。

Radius(Remote Authentication Dial In User Service)拨号接入远端认证协议完成接入用户的认证、授权、计费功能的协议。

以传输层采用TCP、网络层采用IP、链路层采用Ethernet为例,可以看到TCP/IP中报文的封装过程如下图所示。用户数据经过应用层协议封装后传递给传输层,传输层封装TCP头部,交给网络层,网络层封装IP头部后,再交给数据链路层,数据链路层封装Ethernet帧头和帧尾,交给物理层,物理层以比特流的形式将数据发送到物理线路上。图中标识出了以太网数据封装中各字段的长度信息。下面将从上至下依次介绍各层封装。

TCP数据段被封装到IP数据包内。TCP数据报由TCP Head(头部)和TCP Data(数据)组成。 TCP最多有60个字节的头部,如果没有Option字段,正常的长度是20字节。
TCP Head组成如图所示,这里简单介绍以下几个部分,详细功能作用请参考传输层协议。
Source Port:源端口号。TCP会为应用程序分配一个源端口号。
Destination Port:目的端口号。
Sequence Number:序列号。用于标识从TCP发送端向TCP接收端发送的数据字节流。
Ack Num:确认序列号。确认序列号包含发送确认的一端所期望收到的下一个序号。确认序列号为上次成功收到的数据序列号加1。
Option:选项字段。

网络层收到传输层的TCP数据段后会再加上网络层IP头部信息。
普通的IP头部固定长度为20个字节(不包含IP选项字段)。 IP报文头主要由以下字段组成:
报文长度是指头部占32比特字的个数,包括任何选项。由于它是一个4比特字段, 24=16,除掉全0项共有15个有效值比特字段,其中最大值也为15,表示头部占15个32比特。因此32*15/8=60字节,头部最长为60字节。版本号(Version)字段标明了IP协议的版本号,目前的协议版本号为4。下一代IP协议的版本号为6。
8比特的服务类型(TOS, Type of Service)字段包括一个3比特的优先权字段(COS, Class of Service), 4比特TOS字段和1比特未用位。 4比特TOS分别代表最小时延、最大吞吐量、最高可靠性和最小费用。总长度(Total length)是整个IP数据报长度,包括数据部分。由于该字段长16比特,所以IP数据报最长可达65535字节。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过576字节的数据报。 UDP限制用户数据报长度为512字节,小于576字节。而事实上现在大多数的实现(特别是那些支持网络文件系统NFS的实现)允许超过8192字节的IP数据报。

标识符(Identification)字段唯一地标识主机发送的每一份数据包。通常每发送一份报文它的值就会加1。
生存时间(TTL, Time to Live)字段设置了数据包可以经过的路由器数目。一旦经过一个路由器, TTL值就会减1,当该字段值为0时,数据包将被丢弃。
协议字段确定在数据包内传送的上层协议,和端口号类似,IP协议用协议号区分上层协议。TCP协议的协议号为6, UDP协议的协议号为17。
报头校验和(Head checksum)字段计算IP头部的校验和,检查报文头部的完整性。
源IP地址和目的IP地址字段标识数据包的源端设备和目的端设备IP地址信息。

物理网络层一般要限制每次发送数据帧的最大长度。任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。 IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。把一份IP数据报分片以后,只有到达目的地才进行重新组装。重新组装由目的端的IP层来完成。已经分片过的数据报有可能会再次进行分片(可能不止一次)。 IP头部中包含的数据为分片和重新组装提供了足够的信息。
标志位:3比特
多种控制位:
0比特: 保留, 必须为0
1比特: (DF) 0 = 可以分片, 1 =不可以分片.
2比特: (MF) 0 =最后的分片, 1 = 更多的分片.
DF和MF的不能同时为1,否则将产生冲突。

0 1 2
+---+---+---+
| | D | M |
| 0 | F | F |
+---+---+---+
片偏移:指的是这个分片是属于这个数据流的哪里。
当I P数据报被分片后,每一片都成为一个数据包。具有自己的I P头部并在选择路由时与其他分组独立。

以太网头部由三个字段组成:
DMAC:表示目的终端MAC地址。
SMAC:表示源端MAC地址。
LENGTH/TYPE字段:根据值的不同有不同的含义:
当LENGHT/TYPE > 1500时,代表该数据帧的类型(比如上层协议类型)常见的协议类型有:
0X0800 IP数据包
0X0806 ARP请求/应答报文
0X8035 RARP请求/应答报文。
当LENGTH/TYPE < 1500时,代表该数据帧的长度。
DATA/PAD:表示具体的数据。以太网规定数据部分最小长度为46字节,不足46字节,需要在数据部分增加填充(Pad)字节。
以太网尾部为FCS字段:是帧校验字段,来判断该数据帧是否出错。

案例分析:

下图为数据链路层封装。在数据链路层本例中使用的是Ethernet II格式封装。该封装格式在数据链路层曾介绍到。图中首先看到的是DMAC,其次是SMAC,接下来是类型字段。具体的数值如下:
DMAC为: 00d0:f838:43cf
SMAC为: 0011:5b66:6666
Type:字段为0X0800表明数据字段封装是IP报文。

下图为网络层报文封装。一个网络层IP包是由两部分组成, IP头部和IP数据。而IP头部由许多字段组成
本例中版本字段值为4,表明是一个IPv4的报文。报文头为20字节。协议字段为0X06,表明数据封装的是一个TCP报文。数据的源端IP地址为192.168.0.123,目的地址为202.109.72.70。

下图为传输层数据封装。如图所示的传输层使用的是TCP协议,源端口号为随机端口号3514,目的端口号为公认HTTP协议端口号80,说明这是一个源主机访问目的主机的HTTP服务的数据报文。

1、OSI网络参考模型分哪几层?
OSI网络参考模型分为七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
2、TCP/IP协议栈各个层次的功能?
TCP/IP协议栈分为五层,分别是物理层、数据链路层、网络层、传输层、应用层。物理层定义传输数据所需要的机械、电气、功能特性及过程等手段。数据链路层提供对物理层的控制,检测并纠正可能出现的错误,并且进行流量调控(可选)。网络层检查网络拓扑,以决定传输报文的最佳路由。传输层的基本功能是将应用层发往网络层的数据分段或将网络层发往应用层的数据段合并。并建立端到端的连接,将数据段从一台主机发往另一台主机,保证数据传送正确性可选。应用层为应用程序提供网络服务。
3、TCP/IP协议栈中报文封装和解封装过程?
报文的封装和解封装是一个相反的过程。封装是从上至下依次加上各层的头部,而解封装是从下至上依次拆离各层的头部信息。
4、MAC地址与IP地址有什么区别?
MAC地址是固化在设备硬件上的48比特的物理地址,该地址不能修改。IP地址是一个32比特的地址,存在于网络层,该地址可以修改。IP地址分为公共地址和私有地址。公共地址是全球唯一的,而私有地址可以在局域网内重复使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值