物理层
激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器和集线器。
中继器:
又称转发器,原理是信号再生和还原,扩大网络传输距离。
仅作用于信号的电气部份,不管数据中是否有错误数据或不适合网段的数据。
中继器的两端既能连接相同的媒体又能连接不同的媒体,但不能连接两个具有不同速度的局域网。
中继器两端的网络部分是网段,而不是子网。
中继器没有存储转发功能,两端的网段一定要是同一个协议。
集线器:
实质上是一个多端口的中继器,在网络中只起到信号放大和转发作用,目的是扩大网络的传输范围,不具备信号的定向传送能力,是个共享式设备。
5-4-3:
中继器或集线器有“5-4-3规则”,其中“5”表示5个网段,“4”表示4个中继器或集线器,“3”表示3个网段为主机段。也就是说在一个由中继器或集线器互联的网络中,任意发送方和接收方最多只能经过4个中继器、5个网段。
链路层
最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层
将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;
控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;
以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
数据链路层在不可靠的物理介质上提供可靠的传输。
该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
主要的协议:以太网协议;
两个重要设备名称:网桥和交换机。
网桥:网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。
交换机:是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机。
网络层
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
IP
协议:提供不可靠、无连接的传输服务。
无连接数据报传输、数据报路由选择和差错控制。
ICMP
协议:
确认IP
包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因,改善网络设置等。同时ICMP
的这种通知消息会使用IP进行发送,收到ICMP
包的主机会分解ICMP
的首部和数据与以后得知具体发生的原因。
ping
用来探测主机间是否可以通信,ICMP
数据包由8bit
的错误类型和8bit
的代码和16bit
的校验和组成。
ARP
协议:
根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
ARP
命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
(1)根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
(2)如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
(3)主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
(4)主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
(5)当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
RARP
命令
如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。
发送一个RARP
广播
路由选择协议:
RIP
协议 :底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF
协议 :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
相关技能:
-
邻居:宣告
OSPF
的路由器(也可能是通过quagga
软件配置的普通服务器)从所有启动OSPF
协议的接口上发出Hello
数据包。如果两台路由器位于同一条数据链路上,并且它们根据互相的hello
消息中指定的某些信息(比如id等)协商成功,那么它们就成为了邻居。 -
邻接关系:两台邻居路由器之间构成的一条点到点的虚链路,邻接关系的建立是由交换hello信息的路由器类型和网络类型决定的。
-
链路状态通告:每一台路由器都会在所有形成邻接关系的邻居之间发送链路状态通告
LSA
。LSA
描述了路由器所有的链路、接口、邻居等信息。ospf
定义了许多不同的LSA
类型。 -
链路状态数据库:每一台收到来自邻居路由器发出的
LSA
的路由器都会把这些LSA
信息记录在它的LSDB
中,并且发送一份LSA
的拷贝给该路由器的其他所有邻居。这样当LSA
传播到整个区域后,区域内所有的路由器都会形成同样的LSDB
。 -
当这些路由器的
LSDB
完全相同时,每一台路由器都会以自身为根结点,使用最短路径优先( S h o r t e s t P a t h F i r s t Shortest\ Path\ First Shortest Path First, S P F SPF SPF)算法计算一个无环路的拓扑图,这个拓扑图就是SPF
算法树。每台路由器都会从自己的SPF算法树中构建出自己的路由表,用于动态选路。 -
当区域内所有节点的
LSDB
状态都已同步后,ospf
协议将会变的平静下来,邻居之间根据配置固定时间交换hello
数据包作为心跳消息,并且每隔30分钟重传一次LSA
。如果网络拓扑稳定,那么ospf
那将是稳定的。如果网络拓扑发生了变化,比如有节点故障或者新增节点,那么将重新开始交换信息并计算路由。 -
OSPF
拓扑中的节点可以分为两类:传输节点和末梢节点。传输节点指网络链路中的中转路由器,它一般两端与其他ospf
邻居相连,作用仅是转发数据包,而数据包的源网络和目的网络往往都不同于传输节点所在的网络;末梢节点指网络链路中的末端路由器,也可能是通过quagga
软件配置的服务器,它一般只有一端与ospf
邻居相连,作为数据包的源头或者目的地。OSFP
协议在末梢节点宣告主机路由(也就是子网掩码为255.255.255.255
的路由),这样拓扑中其他节点要访问末梢节点就可以在LSDB
中查到对应的信息,并通过SPF算法生成的最短路径进行访问。
传输层
传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题。
TCP
提供的是一种可靠的数据流服务,采用"带重传的肯定确认"技术来实现传输的可靠性。TCP
还采用一种称为"滑动窗口"的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
TCP:
TCP连接建立过程: 首先Client
端发送连接请求报文,Server
段接受连接后回复ACK
报文,并为这次连接分配资源。Client
端接收到ACK
报文后也向Server
段发生ACK
报文,并分配资源,这样TCP
连接就建立了。
TCP连接断开过程: 假设Client
端发起中断连接请求,也就是发送FIN
报文。Server
端接到FIN
报文后,意思是说"我Client
端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket
,可以继续发送数据。所以你先发送ACK
,“告诉Client
端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client
端就进入FIN_WAIT
状态,继续等待Server
端的FIN
报文。当Server
端确定数据已发送完成,则向Client
端发送FIN
报文,“告诉Client
端,好了,我这边数据发完了,准备好关闭连接了”。Client
端收到FIN
报文后,“就知道可以关闭连接了,但是他还是不相信网络,怕Server
端不知道要关闭,所以发送ACK
后进入TIME_WAIT
状态,如果Server
端没有收到ACK
则可以重传。”,Server
端收到ACK
后,“就知道可以断开连接了”。Client
端等待了2MSL
后依然没有收到回复,则证明Server
端已正常关闭,那好,我Client
端也可以关闭连接了。TCP
连接就这样关闭了!
为什么要三次握手?
1、防止已过期的连接再次传到被连接的主机
2、三次握手改成仅需要两次握手,死锁是可能发生
考虑计算机A
和B
之间的通信,假定B
给A
发送一个连接请求分组,A
收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A
认为连接已经成功地建立了,可以开始发送数据分组。可是,B
在A
的应答分组在传输中被丢失的情况下,将不知道A
是否已准备好,不知道A
建议什么样的序列号,B
甚至怀疑A
是否收到自己的连接请求分组。在这种情况下,B
认为连接还未建立成功,将忽略A
发来的任何数据分组,只等待连接确认应答分组。而A
在发出的分组超时后,重复发送同样的分组。这样就形成了死锁.
UDP:
(1)源端口号;
(2)目标端口号;
(3)数据报长度;
(4)校验值。
总共
16
16
16字节,每个
2
2
2字节。
会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
应用层
FTP
(文件传送协议)、 Telnet
(远程登录协议)、DNS
(域名解析协议)、SMTP
(邮件传送协议),POP3
协议(邮局协议),HTTP
协议(Hyper Text Transfer Protocol
)
其他协议
NAT
网络层
将私有(保留)地址转化为合法IP
地址的转换技术,它被广泛应用于各种类型Internet
接入方式和各种类型的网络中。原因很简单,NAT
不仅完美地解决了lP
地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
DHCP协议
应用层
DHCP
动态主机设置协议是一个局域网的网络协议,使用UDP
协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP
地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
HTTP:
超文本传输协议(HTTP,HyperText Transfer Protocol
)是互联网上应用最为广泛的一种网络协议。所有的WWW
文件都必须遵守这个标准。HTTP 协议包括哪些请求?
GET
:请求读取由URL
所标志的信息。
POST
:给服务器添加信息(如注释)。
PUT
:在给定的URL
下存储一个文档。
DELETE
:删除给定的URL
所标志的资源。
HTTP 中, POST 与 GET 的区别
1)Get
是从服务器上获取数据,Post
是向服务器传送数据。
2)Get
是把参数数据队列加到提交表单的Action
属性所指向的URL
中,值和表单内各个字段一一对应,在URL
中可以看到。
3)Get传送的数据量小,不能大于2KB
;Post传送的数据量较大,一般被默认为不受限制。
4)根据HTTP
规范,GET
用于信息获取,而且应该是安全的和幂等的。
I. 所谓 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET
请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
II. 幂等 的意味着对同一URL
的多个请求应该返回同样的结果。