一. 网络模型
0、OSI 七层模型
1984年国际标准化组织(ISO),提出OSI开放系统互连模型(Open System Interconnection)。
分层的优点:
- 各层间相互独立,某一层的变化不会影响其他层。
- 促进标准化工作,使网络易于实现和维护。
第七层:应用层(Application)
为用户的应用程序和各种网络服务之间提供相应的接口(协议)。常见的网络服务:WWW、E-mail、FTP
第六层:表示层(Persentation)
在应用层上,不同应用程序所产生的资料格式不一定符合网络传输的标准编码格式,所以在这个层次中,主要的功能就是将来自本地应用程序的格式转换为网络的标准格式,然后再交给下面的层次继续处理。
所以,在这个层次上面主要定义的就是各种网络服务(程序)之间资料格式的转换。编码和解码数据、加密和解密数据、压缩和解压数据。
常见的格式:TIFF ,JPEG ,MIDI ,MPEG ,QuickTime
第五层:会话层(session)
分割进程间的数据、管理用户间的会话。三种通信方式:
-
- 单工:只有发送数据没有接受数据。如喇叭
- 半双工:可以发送数据也可以接受数据,不能同时发送和接受数据。如对讲机
- 全双工:可以同时发送数据和接受数据。如视频
第四层:传输层(Transport)
将数据封装成数据段(报文)(Segment)在不同物理节点上的应用程序间建立连接以传输数据用一个寻址机制来标识一个特定的应用程序传输层地址(即端口号port)。
连接类型:
-
- 面向连接(Connection-oriented):丢失的数据可以找回,速度慢。如登录
- 无连接(Connectionless):丢失的数据无法找回,速度快。如下载
第三层:网络层(Network)
基于网络层地址进行不同网络系统间的路径选择,我们所说的 IP (Internet Protocol) 就是在这一层定义的,同时也定义出主机之间的连线建立、终止与维护,资料封包 (packet)的传输路径选择等等。 因此网络层中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了 。
-
- 网络层地址(IP地址)
- 分割和重新组合数据包(Packet)
- 差错校验
- 可能的数据流量控制
- 典型设备:路由器,三层交换机.
第二层:数据链路层(Data Link)
将数据包加以组织封装成数据帧(Frame)通常在 LAN 上面的信息单元被称为 frame 。定义了它们的格式、和如何穿越网络。每一个frame都会被赋予一个地址码和侦错监测值(checksum)。
- 硬件地址或物理地址(即MAC地址)
- 两个子层
-
- 逻辑链路控制(LLC)IEEE802.2
- 介质访问控制(MAC)IEEE802.3
- 网卡、网桥和交换机
第一层:物理层(physical)
在物理层当中主要定义了最基础的网络硬件标准,包括各种网络传输介质,各种设备规范,以及各种接头标准,还有传输信号的电压等等。
在物理层上传输的单元:比特流(bit)
工作在物理层上的硬件:缆线、中继器、集线器。
每一层所对应的物理设备:
应用层 | 传输层 | 网络层 | 数据链路层 | 物理层 |
计算机 | 防火墙 | 路由器 | 交换机 | 网卡 |
OSI:“开放式系统互联通信参考模型”,从下到上分别是:物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层
1、OSI 七层网络模型
第一层:物理层
物理层,网络的物理形式,如电缆、光纤、网卡、集线器等。
OSI的物理层规范是有关传输介质的特这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。这一层,数据单位是比特(bit)。
第二层:数据链路层
数据链路层,相当于TCP/IP协议的链接层;
数据链路层,它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。在这一层,数据的单位称为帧(frame)。
第三层:网络层
网络层,相当于TCP/IP协议的网际层(IP层);
网络层:这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。在这一层,数据的单位称为数据包(packet)。
第四层:传输层
传输层,相当于TCP/IP协议的传输层;
传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。这一层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。
第五层:会话层
会话层,维护网络中的连接状态,即保持回话和同步。
会话层,它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。
第六层:表示层
表示层,把数据转换成合适的、可理解语法和语义。
表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。这一层,数据单位还是报文。
第七层:应用层
应用层,面向具体的应用传输数据。
应用层,与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。这一层,数据单位还是报文。
----------------------------------------
TCP/IP无物理层,第五、六、七层对应应用层,TCP/IP协议和OSI协议就对应起来了。
辨别四层和七层,“两个凡是”:凡是由操作系统负责处理的就是四层或四层以下,凡是需要有应用程序处理的就是第七层。
二层转发:设备工作在数据链路层,帧在经过交换机设备时,检查帧的头部信息,拿到目标的MAC地址,进行本地转发和广播。
三层路由:设备工作在IP层,报文经过有路由功能的设备时,分析报文的头部信息,拿到IP地址,根据网段范围,进行本地转发或者选择下一个网关。
OSI七层参考模型的各个层次的划分遵循下列原则:
-
- 同一层中的各网络节点都有相同的层次结构,具有同样的功能。
- 同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。
- 七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。
- 不同节点的同等层按照协议实现对等层之间的通信
2、TCP/IP 四层网络模型
TCP/IP的设计者创造性的提出“分层”的概念,把复杂的网络通信划分出多个层次,再给每一层分配不同的职责,采用“分而治之”的方法解决了网络通信的难题。TCP/IP是一个纯软件的栈,缺少物理设备。
TCP/IP协议共有四层,链接层(MAC层) → 网际层(IP层)→ 传输层(TCP层)→ 应用层 各层之间传输的内容可以统称为 数据包
第一层:连接层
第一层叫“链接层”,负责在以太网、WiFi这样的底层网络上发送原始数据,工作在网卡的层次,使用MAC地址来标记网络上的设备,所以也可以叫MAC层。传输单位是“帧”。
第二层:网络层
第二层叫"网际层"或者“网络互连层”,用IP地址取代MAC地址,把许多局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只有把IP地址再“翻译”成MAC地址就可以了。传输单位是“包”。
第三层:传输层
第三层叫“传输层”,负责保证数据在IP地址标记的两点之间“可靠”地传输。传输单位是“段”。
第四层:应用层
第四层叫“应用层”,有各种面向具体应用的协议,HTTP、FTP、SMTP等。传输单位是“消息或报文”。
-----------------------------------------------
TCP协议还有一个小伙伴UDP协议,两者相比之下,TCP是一个有状态的协议,需要先三次握手与对方建立连接才能发送数据,而且保证数据不丢失不重复。UDP则比较简单,无状态,不用事先建立连接就可以发数据,但不保证数据一定发送到对方。两个协议的重要区别在于数据的形式。TCP是连续的“字节流”,有先后顺序,UDP则是分散的小数据包,是顺序发,乱序收。
从上往下,每经过一层,协议就会在数据包包头上面做点手脚,加点东西,传送到接收端,再层层解套出来,如下示意图:
3、TCP/IP 五层协议
5层只是OSI和TCP/IP的综合,是业界产生出来的非官方协议模型,但是很多具体的应用。实际应用还是TCP/IP的四层结构。为了方便可以把下两层称为网络接口层。五层体系结构包括:应用层、传输层、网络层、数据链路层和物理层。
5层模型不展开讲解,内容和功能参照7层的,这里把3者做一个综合的对应,如下图:
4、TCP 三次握手
5、封装(encapsulation)
把OSI参考模型每层自己的协议信息加进数据信息的过程,反之叫做解封装
协议数据单元(protocol data units,PDU):数据 + 封装进去的信息。
二.网络协议
0、协议相关概念
a. 协议
什么是协议:协议是网络中计算机或设备之间进行通信的一系列规则的集合。
协议示例:以发送消息“HELLO STUDENTS” 为例。
常用协议:IP、TCP、HTTP、POP3、SMTP
一个网络协议的作用主要有两个:
-
- 一是建立对等层之间的虚拟通信,
- 二是实现层次之间的无关性。
层次间无关性:较高层次和相邻的相低层次进行通信时
-
- 较高层次只是利用较低层次提供的接口和服务,而不需了解低层实现该功能所采用的算法和协议的细节;
- 较低层次也仅是使用从高层系统传送来的参数和控制信息,这就是层次间的无关性。
b. 协议栈
在网络中,为了完成通信,必须使用多层上的多种协议,这些协议按照层次顺序组合在一起,构成了协议栈(Protocol Stack),也称为协议族(Protocol Suite)。
常见的协议栈:
-
- TCP/IP:工业标准、开放式协议,Internet网络的标准
- IPX/SPX:Novell开发的Netware操作系统使用的协议,IPX为网际数据包交换协议,工作在网络层,SPX为序列数据包交换协议,工作在传输层
- NetBIOS/NetBEUI:较小的协议栈,应用于IBM和早期的Windows系统,现在Windows仍然支持
- AppleTalk:Apple公司的MacOS中所采用的网络协议
TCP/IP 协议栈:
TCP/IP 数据帧封装过程:
1、应用层
应用层是TCP/IP协议组的顶层,所有的应用程序包含在这一层中;它们包括:HTTP ,FTP,Telnet,SMTP,SNMP,DNS等。
a. TELNET
Telnet是TCP/IP中的一种应用协议,可以为终端仿真提供支持。
Telnet可使用户连接到主机上,使主机响应起来就像它直接连接在终端上一样。
Telnet在发送端和接收端使用TCP的23号端口以进行专用的通信。
b. FTP(File Transfer Protocol)
文件传输协议,使用TCP20号和21号端口:
-
- 20号端口用于数据交换
- 21号端口用于建立连接
- 允许目录和文件访问,上传下载,不能远程执行文件
c. TFTP(Trivial File Transfer Protocol)
简单文件传输协议:是无连接的,使用UDP的69号端口用于当数据传输错误无关紧要而且无须安全性时的小型文件的传输。
d. SMTP(Simple Mail Transfer Protocol)
简单邮件传输协议,使用 25 端口:是为网络系统间的电子邮件交换而设计的。 SMTP只需要在接收端的一个电子邮件地址即可发送邮件.
POP3 协议,使用110端口:用来接收邮件.
e. DNS(Domain Name Service)
域名服务,使用53号端口:将域名转换为IP地址,或将IP地址转换为域名,用于解析完全合格域名(FQDN),例如 www.163.com。
f. DHCP (Dynamic host configuration protocol)
动态主机配置协议(DHCP)服务器可以提供的信息有:
-
- IP地址
- 子网掩码(subnet mask)
- 域名(domain name)
- 默认网关(default gateway)
- DNS
2、传输层
面向连接的服务(TCP):源端与目的端在通信前要先建立连接,然后在此连接上互相传输数据帧,每一个帧都被编号,数据链路层保证传送的帧被对方收到,且只收到一次,双方通信完毕后拆除连接。
无确认,无连接的服务(UDP):源端不需要建立连接就向目的端发送独立的数据帧,而目的端也不需要对收到的帧进行确认.
端口:
在TCP/IP协议的通信中,端口号是为了识别应用程序和各种服务而使用的号码,它包含在TCP协议和UDP协议的报头中。
由于网络通信所用的协议较多,且一台主机可能同时提供多种服务,为了标识和区分这些协议,引入了端口的概念,即每个协议都对应着一个端口,用端口号予以标识,因此每种服务也都有其自己的工作端口。若一台服务器提供多种服务,客户端可根据端口号访问到它所需要的服务。
端口的分类:
-
- 知名端口:网络协议默认使用的端口,用户不可随意使用。范围:1~1023
- 动态端口:计算机根据需要随机打开的端口,使用完毕即关闭。范围:1024~65535
a. TCP(Transmission Control Protocol )
TCP 连接过程:
三次握手:
数据结构:
TCP格式段:
- 源端口(Source Port):呼叫端口号
- 目的端口(Destination Port):被叫端口号
- 序号(Sequence Number):标记数据段的顺序
- 确认号(Acknowledgment Number):下一个段的序号
- 报头长度(HLEN):报头的字节数,又称偏移量
- 保留域(Reserved):为0
- 编码位(Code Bits):控制功能(会话的建立和终止)
- 窗口(Window):发送的字节数
- 校验和(Checksum):报头和数据字段的校验和
- 紧急指针(Urgent Pointer):紧急数据的末尾
- 选项(Option):当前定义项,TCP段的最大值
- 数据(Data):上层协议的数据
b. UDP(User Datagram Protocol)
用户数据报协议,UDP:是无连接(connectionless),即不可靠,因为它不与对方进行协商并连接,它也不会给数据段标号,也不关心数据段是否到达接受方。
数据结构:
UDP协议的用途和特征:
UDP协议只是使用IP协议提供了无连接的通信服务,所以无论何时都能够发送数据。而且,由于它处理比较简单,所以能够进行高速的处理。UDP协议适合以下几方面的应用:
-
- 总包数比较小的通信;
- 动画和声音的多媒体通信;
- 没有顺序号和确认号
- 由上层应用(应用层程序)来保证传输的可靠性
c. TCP VS UDP
- TCP协议在传送数据段的时候要给段标号;UDP协议没有
- TCP协议可靠; UDP协议不可靠
- TCP协议是面向连接; UDP协议采用无连接
- TCP协议负载较高; UDP协议低负载
- TCP协议的发送方要确认接受方是否收到数据段; UDP反之
- TCP协议采用窗口技术和流量控制;UDP协议没有
3、网络层
IP数据:
- Version 版本 (VER):表示的是 IP 版本,目前的 IP 规格多为版本 4 (version 4)﹐所以这里的数值通常为 0x4 (注意﹕封包使用的数字通常都是十六进制的)。
- Internet Header Length 表头长度 (IHL):我们从IP包规格中看到前面的 6 行为header ﹐如果Options沒有设定的話﹐也就只有5行的长度; 我们知道每行有32bit 也就是4byte;那么,5列就是20byte了。
- Type of Service 服务类型(TOS):这里指的是 IP 封包在传送过程中要求的服务类型,其中一共由 8 个 bit 組成﹐每组 bit 组合分別代表不同的意思。
- Total Length 封包总长 (TL):包括表头和数据的总和.
- Identification 识别码 (ID):每一个IP封包都有一個 16bit 的唯一识别码。当程序产生的数据通过网络传送时,都会在网络层拆散成封包形式发送,当封包进行重组时,这个ID就是依据。
- Flag 标志 (FL):这是当封包在传送过程中进行最佳组合时使用的三个bit的识别记号。
- Fragment Offset 分割定位 (FO):当一个大的封包在经过一些传输单位较小的路径时。会被切割为碎片再进行传送,由于网络情况或其他因素的影响,其抵达顺序并不一定会和发送时相同,所以当封包进行切割时,会对各片段做好定位记录,这样在重组的时候就可以对号入座了。 如果封包沒有被切割﹐那么 FO 的值为“0”。
- Time To Live 存活時間 (TTL)。Protocol 协议类型(PROT):里指的是该封包所封装的协议类型。
协议域:
ICMP协议
ICMP 的全称是 Internet Control Message Protocol (网络控制信息协议)。从技术角度来说,ICMP 就是一个“错误侦测与回报机制”,其目的就是让我们能够监测网络的连线状况,也不能确保连线的准确性。
Ping命令用于检查网络的可达性,Icmp Echo Reply消息表示目的节点可达。Ping的主要功能是确定一个给定的IP地址是否可以到达。如果ping执行成功,则暗示:
- 从源到目的节点存在一条可以工作的路径;
- 目标IP地址对应的机器在正常工作;
- 从目标节点到源节点存在一条可以工作的路径。但是,从源到目标的路径与从目标回源节点的路径可能不一致。即不对称路由
ARP 协议
- IP地址将不同的物理地址统一起来,将物理地址隐藏.上层软件使用IP地址标识节点。
- 只有两台机器知道物理地址时才能进行实际的通信。
- 分组到达目的物理网络后,发送分组的计算机需把目的主机的IP地址映射到它的物理地址上。
- 需经中介路由器的发送,发送方必须将中介路由器的IP地址映射到它的物理地址上。
源计算机利用ARP协议向网络发广播,寻找目标主机的MAC地址。
正常情况下,PC机只对本地网络主机进行ARP广播来查找目标主机的MAC地址,对非本地目标主机,直接把IP数据包发给默认网关,由该路由器来转发IP包。
RARP 协议
在DHCP环境中,PC机只知道自己的MAC地址,需要通过RARP协议发送广播来获取自己的IP地址。
IP地址 VS MAC地址
物理地址是在单个网络内部对一个计算机进行寻址时所使用的地址。在局域网中物理地址被固化在网卡的ROM中,物理地址也称为硬件地址或MAC地址。IP地址有32 bit,物理地址有48 bit。
在IP层的互连网上,我们看到的是IP数据报,在数据报的首部中写明源地址和目的地址。
在具体的物理网络的链路层,我们看到的是MAC帧,IP数据报被封装在MAC帧里面。
互连在一起的网络的硬件地址体系可能各不相同,但IP层抽象的互连网却屏蔽了下层的这些很复杂的细节。
4、网络接口层
网络接口层:负责将数据放置在网络媒介上,从网络媒介上接收数据。它包括以太网(IEEE802.3)、异步传输模式(ATM)、帧中继(FR)和令牌环(IEEEE802.5)这样的协议。