1.应用和数据
故事的起源 - 应用
应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频等。
伴随着应用会有信息的产生。比如文本,图片,视频等都是信息的不同呈现方式。
应用的实现 - 数据
数据的产生
在计算机领域,数据是各种信息的载体。
数据传输
大部分应用程序所产生的数据需要在不同的设备之间传递。
2.网络参考模型与标准协议
网络通信协议
不同的协议栈用于定义和管理不同网络的数据转发规则。
OSI参考模型
7. 应用层 | 对应用程序提供接口。 |
6. 表示层 | 进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解。 |
5.会话层 | 在通信双方之间建立、管理和终止会话。 |
4. 传输层 | 建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等。 |
3. 网络层 | 定义逻辑地址;实现数据从源到目的地的转发。 |
2. 数据链路层 | 将分组数据封装成帧;在数据链路上实现数据的点到点、或点到多点方式的直接通信;差错检测。 |
1. 物理层 | 在媒介上传输比特流;提供机械的和电气的规约。 |
7. 应用层:为应用程序提供一个标准化接口,方便后续同类型应用可以直接进行调用,统一标准。
6. 表示层:能够让一个操作系统的数据被另一个操作系统正确的识别和理解,以及可以对数据进行加密,压缩。
5.会话层:建立维护和管理一次会话链接。为操作系统中应用程序提供一个进程号,用于区分本地不同的应用进程。可以让一台设备同时开启多个相同的应用。
4. 传输层:建立管理和维护一次端到端的链接。用于描述一个唯一的端到端的链接。
利用报文的五元组来区分不同的端到端的通信。
五元组:SIP(源IP地址)+DIP(目标IP地址)+协议类型(TCP/UDP)+Sport(源端口号)+Dport(目标端口号)。
端口号可以提高IP地址的复用率。
3. 网络层:提供IPV4和IPV6的地址标识,基于IP地址进行报文的转发。负责解决数据如何在整张网络上进行转发。
2. 数据链路层:负责解决数据如何在每段链路上进行正确的转发,维护一段链路之间的正常通信。
1. 物理层:通信需要传输介质。
分层模型-OSI
TCP/IP参考模型
因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。
TCP/IP常见协议
TCP/IP协议栈定义了一系列的标准协议。
常用协议
应用层:HTTP、HTTPS、FTP、TFTP、DNS、Telnet、SMTP、PoP3、SSH、BGP...
传输层:TCP、UDP、OSPF
网络层:IGMP、ICMP、IP、ARP、ISIS、VRRP
数据链路层:ETH、PPP、HDLC、ATM、PPPoE、FR
常见协议标准化组织
IETF(Internet Engineering Task Force)
负责开发和推广互联网协议(特别是构成TCP/IP协议族的协议)的志愿组织,通过RFC发布新的或者取代老的协议标准。
IEEE(Institute of Electrical and Electronics Engineers)
IEEE制定了全世界电子、电气和计算机科学领域30%左右的标准,比较知名的有IEEE802.3(Ethernet)、IEEE802.11(WiFi)等。
ISO(International Organization for Standardization)
在制定计算机网络标准方面,ISO是起着重大作用的国际组织,如OSI模型,定义于ISO/IEC 7498-1。
应用层
应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
应用层的PDU被称为Data(数据)。
每一种应用层协议都有一个或者多个已经分配好的端口号,用于让接收主机了解该数据属于哪种应用层协议。
常见应用层协议 - FTP
FTP(File Transfer Protocol)是一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,它采用C/S(Client/Server)结构。
FTP客户端:提供本地设备对远程服务器的文件进行操作的命令。用户在PC上通过应用程序作为FTP Client,并与FTP服务器建立连接后,可以对FTP Server上的文件进行操作。
FTP服务器:运行FTP服务的设备。提供远程客户端访问和操作的功能,用户可以通过FTP客户端程序登录到服务器上,访问设备上的文件。
常见应用层协议
Telnet
Telnet是数据网络中提供远程登录服务的标准协议。 Telnet为用户提供了在本地计算机上完成远程设备工作的能力。
用户通过Telnet客户端程序连接到Telnet服务器。用户在Telnet客户端中输入命令,这些命令会在服务器端运行,就像直接在服务端的控制台上输入一样。
HTTP
HTTP(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
传输层
传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。
传输层的PDU被称为Segment(段)。
传输层:当应用层PDU(协议数据单元)打上传输层头部后,该部分叫做数据段segment。
TCP:面向连接(传递数据之前先建立连接)的协议。
UDP:无连接的协议。
常用协议端口号
FTP TCP 20 21
Telnet TCP 23
HTTP TCP 80
SSH TCP 22
HTTPS TCP 443
DNS UDP 53(建立域名与IP的对应关系)
DHCP UDP 67 68(动态主机配置协议)
SNMP UDP 162 161(建立网管管理协议)
TCP和UDP – 报文格式
头部是只要使用该协议,它就必须存在。
端口号:表示与区分传输层承载上层应用
面向连接:传递数据之间建立连接关系
序列号,确认号:提供有序、可靠传输
Windows:调整TCP的传输效率
紧急指针:标识需要优先处理的数据
TCP和UDP – 端口号
端口号取值范围:0~65535,共有65536个数字。
源端口号(未知端口号);取值范围1024~65535,在此范围内随机产生。
目标端口号(已知端口号):取值范围1~1023,因为该范围内的端口号已经被分配给了应用层协议。
端口号可以实现利用同一个地址访问另一个地址的不同服务,也可以访问不同地址的不同服务。
TCP的建立 - 三次握手
任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
TCP三次握手:TCP在传输数据之前都要进行三次握手以此确保双方的可靠性,在三次握手过程中不携带任何应用层数据。
FLAG
SYN:同步位,当SYN置位为1(由0变1)时,代表我要和你建立连接。
ACK:确认位,当确认位置为1时,代表本报文有确认性质,是对上一条报文进行确认。
ack确认号:用于确认对方发来的最后一条报文(用于确认收到对方的报文)。
在三次握手第二次及第三次中,确认号为上一个报文的序列号+1,第三次握手中的序列号为上一个报文中的确认号。
三次握手的流程:
TCP每条报文都在做确认,确认对方发来的最后一条。
传输数据:
在TCP传输数据中
序列号=上一个报文的确认号;
确认号=上一个报文的序列号+应用层字节数大小
确认号既保证收到对方的报文,又保证将对方的报文完完整整地收到。
TCP的序列号与确认序列号
TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。
TCP:通信过程中有回馈机制,保证报文的可靠传输,流量控制机制,保证报文的发送效率。TCP只能用于单播(一对一),适用于非实时性业务,例如邮件,但可靠性极高。
UDP:无连接、无回馈,即使有回馈,也是数据上的回馈而不是确认收到,无法保证可靠传输。UDP单播组播广播均可使用,适用于实时性业务,例如电话等。
TCP的窗口滑动机制
TCP通过滑动窗口机制来控制数据的传输速率。
TCP滑动窗口机制:通过TCP报文中的窗口字段来告知对方自身能够最大接受的TCP报文段,保证报文段更有效率的传输。
TCP丢包机制:TCP在发送数据时,会将该数据同时放入重传队列,一旦收到回包,则清空重传队列。一旦没有收到,则丢一个包,全部重传。
TCP的关闭 - 四次挥手
当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
四次挥手:
FIN:终止位,当FIN置位为1时,代表我要请求断开TCP链接。
四次挥手,妥善关闭,防止一端没有发完数据。
只有在三次握手和四次挥手中确认号进行+1确认。
网络层
传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
网络层的PDU被称为Packet(包)。
标识符:用于表示同一个数据包的同一组分片,区分不同数据包的分片。
标志位:32bit
R:保留不用。
DF:不分片位,当DF=1时,代表该数据包不允许分片,当DF=0时,代表允许分片。
MF:当MF=1时,代表我是分片,不是最后一个分片。当MF=0时代表我是最后一个分片。
首片偏移:通过该分片距离第一个分片有多远,依次将分片进行有序的组装。
MF=1 偏移量=0 我是第一个分片
MF=1 偏移量≠0 分片报文,但不是最后一个分片,也不是第一个
MF=0 偏移量=0 非IP分片报文
MF=0 偏移量≠0 最后一个分片
偏移量=第一个分片(传输层大小+PDU)/8=第二个分片的偏移量;
(传输层大小+第一个分片的PDU+第二个分片的PDU)/8=第三个分片的偏移量;
TTL:生存时间,用于三层网络防环,TTL值每进入一台设备TTL值减1,默认TTL值为255,当TTL值为0时,则丢弃该数据。
网络层协议工作过程
数据链路层
数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。
以太网(Ethernet)是最常见的数据链路层协议。
以太网与MAC地址
MAC地址
一个MAC地址有48bit,6Byte
MAC地址通常采用“十六进制”+“-”表示。前24bit由国际组织分配厂商,后24bit由厂商自行分配。
以太网帧格式
以太网技术所使用的帧称为以太网帧(Ethernet Frame),或简称以太帧。
以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式。
数据封装时,每一层都封装其对应的报文的头部,下层无需关心上层具体封装了什么信息,每一层的报文头部都是用来指导报文的正常转发。
数据封装由上至下逐层封装,最终封装成数据帧在网络中传输。
以太网头部帧构成:DMAC(目标MAC)+SMAC(源MAC)+TYPE(0x0800代表上层使用IP协议,0x0806代表上层使用ARP协议)+PDU+以太网帧尾部(用于校验)。
应用层:PDU数据协议单元,由应用程序产生的原始数据。
传输层:数据段,PDU打上传输层头部后的名称。
网络层:数据包,PDU(传输层头部+PDU)打上网络层头部后的名称。
数据链路层:数据帧,PDU(网络层头部+传输层头部+PDU)打上数据链路层头部后的名称。
解封装过程和封装完全相反。
IP地址 vs MAC地址
每个以太网设备在出厂时都有一个唯一的MAC地址,但在设备接入网络时,会同时为每台主机再分配一个IP地址,这是为什么?
单播以太帧
单播MAC地址:可以被用于源目MAC地址,用于一对一通信,第八个bit固定为0,第二个16进制数字永远为偶数。
广播以太帧
广播MAC地址:48bit全为1(FFF)代表该帧为广播帧,不能被用于源MAC地址。
组播以太帧
组播MAC地址:第八个bit固定为1,第二个16进制数永远为奇数。
数据帧传输
数据链路层基于MAC地址进行帧的传输。
地址解析协议 (ARP)
ARP (Address Resolution Protocol)地址解析协议: 根据已知的IP地址解析获得其对应的MAC地址。
ARP地址解析协议:通信过程中必备四个地址,源目MAC,源目IP。通常目标MAC地址未知,所以通过ARP来获取对方的MAC地址。
当PC1要和PC2通信时,首先查询自身的ARP缓存表(IP地址和MAC地址的一一映射),发现ARP缓存表中没有目标ARP缓存条目,此时PC1要发送ARP请求报文来获取对方的MAC地址。
ARP请求报文二层头部中目标MAC地址全FF填充,因为未知其具体的物理地址,则以广播的形式让该广播域内所有主机均受到该ARP请求条目,以便于正确的主机给予回应。
在ARP三层头部中,目标MAC地址未知,为了保证报文的完整性,使用全0填充,同时也是告诉对方未知你的MAC地址。
当非目标主机接收到该帧时,因为目标MAC地址为广播MAC地址,则会剥离二层头部,查看三层头部中的内容,发现DIP(目标IP)不是自己,则丢弃该报文(接受处理,并丢弃)。
当目标主机接收到该帧时,因为目标MAC地址为广播MAC地址,则会剥离二层头部,查看三层头部中的内容,发现DIP(目标IP)是自己,则首先记录下ARP头部中的源MAC地址和源IP地址的映射关系,加入到自身的ARP缓存表中,然后进行回应。
由于PC1已经将自己的源MAC和源IP告知PC2,PC2进行ARP响应报文时,以单播的形式,将DIP和DMAC填入报文中,发给PC1。
PC1收到ARP响应报文时,剥离二层头部,将三层头部中的源MAC和源IP记录进自身的ARP缓存表中,此时双方均有对方的ARP条目,可以正常进行通信。
为了防止ARP缓存表过大,每个ARP条目隐藏运行一个1200s的定时器,如果在此时间内收到该条目的报文,则刷新该表项,如果没收到,则清空该条目。
ARP的工作原理
ARP中间人攻击:解决方式
1.手动绑定ARP条目,由管理员手工的ARP条目不会被相应ARP相应报文所覆盖。
2.使用杀毒软件可以拦截无请求的ARP应答报文。
免费ARP
免费ARP可以用来探测IP地址是否冲突。
免费ARP:用于IP地址的冲突检测,当接口IP发生变更时,会自动发送免费ARP。当IP地址变更时,发送的ARP表项无法刷新对方的ARP缓存表,只有再次进行通信,才能刷新ARP表项。当接口MAC地址发生变更时,发送的免费ARP表项会刷新ARP缓存表。
ARP代理
同一网段、不同物理网络上的计算机之间,可以通过ARP代理实现相互通信。
跨网段通信必须配置网关,当PC没有配置网关要跨网段通信时,此时需要在路由器上开启ARP代理功能。当ARP代理功能开启并且拥有去往目的网段的路由,此时路由器会代替目标设备进行ARP响应。
常见的链路类型:
点到点链路:PPP、HDLC,指网络中设备一对一进行对接,所以无需链路层MAC地址区分同一个广播域的不同设备。
广播型链路:以太网,指可以通过连接交换机实现广播访问,需要MAC地址来区分一个广播域的不同设备。
物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
物理层的PDU被称为比特流(Bitstream)。
常见传输介质
3.数据通信过程
发送方数据封装
中间网络数据传输
封装好的完整数据,将会在网络中被传递。
接收方数据解封装
----以上内容为誉天教育培训过程中所记,如有雷同纯属巧合----