计算机网络七层模型
- 应用层(数据)
- 表示层(数据)
- 会话层(数据)
- 传输层(数据报文)
- 网络层(数据分组)
- 数据链路层(帧)
- 物理层(比特)
TCP/IP四层模型
- 应用层:应用进程->文件传输协议(FTP)、域名服务(DNS)、超文本传输协议(HTTP)
- 传输层:TCP/UDP
- 网络层:ICMP/IGMP/ARP/RARP/IP网络协议 IP
- 网络接口层:网络接口
七层架构简述
- 物理层:主要定义物理设备标准,如网线的接口类型、各种传输介质的传输速率等。主要作用是传输比特流(由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是常说的数模与模数转换)。这一层的数据叫做比特,主要设备:集线器。
- 数据链路层:主要将从物理层接收的数据进行MAC地址的封装与解封装。常把这一层的数据叫做帧,主要设备:网卡、交换机。
- 网络层:选择合适的网间路由和交换节点,确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装。常把这一层数据叫做数据包,主要设备:路由器。
- 传输层:定义了一些传输数据的协议和端口,如TCP、UDP协议,主要将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,以往把这一层数据叫做段。
- 会话层:通过传输层建立数据传输通路。在系统之间发起会话或者接收会话请求(设备之间需要互相认识)
- 表示层:主要是进行对接收的数据进行解释、压缩与解压缩等,即把计算机能够识别的东西转化成人能够识别的东西(如图片、声音等)
- 应用层:主要是一些终端的应用,比如说FTP(各种文件下载)、浏览器、QQ等,可以将其理解为在电脑屏幕上可以看到的东西,也就是终端应用。
每一层协议
- 物理层:RJ45、CLOCK、IEEE802.3(中继器、集线器、网关)
- 数据链路:PPP、FR、HDLC、VLAN、MAC(网桥、交换机)
- 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由器)
- 传输层:TCP、UDP、SPX
- 会话层:NFS、SQL、NETBIOS、RPC
- 表示层:JPEG、MPEG、ASII
- 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
IP地址的分类
- IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。全0和全1的都保留不用。
- A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
- B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
- C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
- D类:是多播地址。**该类IP地址的最前面为“1110”,**所以地址的网络号取值于224~239之间。一般用于多路广播用户[1] 。
- E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
- IP地址与子网掩码相与得到主机号
七层的作用如下
- 物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
- 数据链路层:将比特组装成帧和的传递(帧Frame)
- 网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
- 传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
- 会话层:建立、管理和终止会话(会话协议数据单元SPDU)
- 表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
- 应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
1、Http和Https的区别
- http是超文本传输协议,信息是明文传输,https是具有安全性的SSL加密传输协议。(SSL:安全套接层)
- http和https使用的完全不同的连接方式,用的端口也不一样,前者80,后者443
- https缺点:加载时间变长,增长功耗等;SSL证书要钱,流量成本变高等。
- https的加密机制是一种共享密钥加密和公开加密并用的混合加密机制。(对称和非对称加密)
- https的具体实现,怎么确保安全性?
使用的是对称加密和非对称加密结合的方式进行的,步骤如下:
(1)首先是SSL握手阶段,客户端发送一个携带SSL版本等消息的数据到服务端
(2)服务端收到信息,根据相应的SSL版本,发送非对称加密的公钥给客户端,自己保留私钥。
(3)客户端拿到公钥后,首先进行公钥的验证,通过CA证书。
(4)验证通过后,客户端就会使用该公钥加密对称加密的密钥,发送数据。
(5)服务端收到数据,首先用私钥解密,获得对称加密的密钥,后续所有数据都有获得的对称密钥进行加密传输。
HTTPS网站服务器和浏览器通信的消息是用对称加密算法进行加密的,为了让不同的浏览器用不同的对称加密算法,因此浏览器需要和服务器进行协商,其协商过程是用非对称加密算法进行的加密。非对称的私钥存在在网站服务器,公钥送给浏览器,为了防止在传输过程中黑客篡改公钥信息,使用数字证书的方式来传输公钥,浏览器最后对公钥进行解密,核对证书是否被修改,确保其安全性。
2、对称加密与非对称加密
- 对称加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大的问题就是密钥发送问题,即如何安全的将密钥发给对方;
- 非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只要自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息,使用自己的私钥进行解密。
3、三次握手和四次握手
-
TCP的几个状态:
SYN表示建立连接、FIN表示关闭连接、ACK表示响应、PSH表示有数据传输、RST表示连接重置。 -
三次握手(我要和你建立连接,你真的要和我建立连接么,我真的要和你建立连接,成功):
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入syn_sent状态,等待 Server确认。
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入syn_rcvd状态。
第三次握手:Client收到确认后,检查ack=J+1,ACK是否为1,如果正确则将标志位ACK为1,ack=K+1,并将该数据包发送Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入established状态,完成三次握手,随后Client和Server之间可以开始传输数据了。 -
四次握手(我要和你断开连接;好的,断吧。我也要和你断开连接;好的,断吧):
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入fin_wait_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入Close_wait状态。此时TCP连接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入Last_ack状态。
第四次挥手:Client收到FIN后,Client进入Time_wait状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入Closed状态,完成四次挥手。 -
为什么使用三次握手,两次握手可不可以?
不可以。若服务端在没有确定客户端是否对自己做出正确应答的情况下就建立连接,当客户端因意外使所发的请求报文没有及时到达,服务端收到该请求以为客户端需要建立连接,直接进入ESTABLISHED状态,服务端会一直等待客户端发送数据,造成资源的浪费。第三次握手协议主要是防止已经失效的连接请求又传到服务器端造成错误。 -
为什么要四次挥手
前两次挥手断开一个方向连接,后两个挥手断开另一方向连接。
TIME_WAIT的意义(为什么要等于2MSL)
主动关闭端在TIME_WAIT状态后,等2倍MSL时间之后将状态改为CLOSED以关闭连接。
为了保证服务端能收到客户端的确认应答。若客户端发完确认应答后直接进入CLOSED状态,那么如果该应答丢失,服务端等待超时后就会重新发送连接释放请求,但此时客户端已经关闭了,不会做出任何响应,因此服务端永远无法正常关闭。
超时重传机制
超时重传指的是,发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送。
4、域名系统(服务)协议(DNS)
- DNS是一种分布式网络目录服务,主要用于域名与IP地址的相互转换,以及控制因特网的电子邮件的发送。
5、子网掩码
- 子网掩码是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的为掩码,子网掩码只有一个作用,就是将某个IP地址划分为网络地址和主机地址两部分
6、网关
- 网关又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络连接设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的计算机系统或设备。
7、TCP和UDP区别总结
- TCP面向连接(如拨打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
- TCP提供可靠的服务。TCP提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一段传到另一端;UDP尽最大努力交付,即不保证可靠交付。
- UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信
- 每一条TCP连接只能是点到点的,UDP支持一对一,一对多,多对一和多对多的交互通信
- TCP对系统资源要求较多,UDP对系统资源要求较少
- TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报
8、路由协议的了解和介绍?路由协议所使用的算法?
- 内部网关协议(IGP):RIP(路由信息协议,距离矢量路由协议,16跳),OSPF(开放式最短路径优先,链路状态路由协议)
- 外部网关协议(EGP):BGP(边界网关协议,ISP间的路由协议,连接不同自治系统)
- 静态路由,手工配置路由信息
- 动态路由,自动配置路由信息,距离向量算法(RIP),链路状态算法(OSPF)
9、TCP和UDP相关的协议与端口号
- TCP相关协议
- FTP:文件传输协议,端口号21;
- Telnet:远程登陆端口,端口号23;
- SMTP:邮件传输协议,发送邮件,服务器开放端口25;
- POP3:接收邮件,端口号110;
- HTTP:web服务器传输超文本到本地,端口80
- HTTPS:默认端口号443 / tcp, 443 / udp
- UDP相关协议
- DNS:用于域名解析,端口53
- SNMP:简单网络管理协议,端口161
- TFTP:简单文件传输协议,端口69
10、网页解析的过程与实现方法
http中浏览器一个URL的流程,这个过程中浏览器做了什么,URL(统一资源定位符)包括哪三个部分?
- 浏览器向DNS服务器查找输入URL对应的IP地址;
- DNS服务器返回网站的IP地址;
- 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接;
- 浏览器获取请求页面的html代码;
- 浏览器在显示窗口内渲染HTML;
- 窗口关闭时,浏览器终止与服务器的连接。
11、TCP怎么保证可靠性/
- 将数据截断为合理长度;
- 超时重传
- 应答机制
- 差错检验
- 失序重新排序
- 丢弃重复数据
- 流量控制(流量控制协议是可变大小的滑动窗口协议)。
12、TCP滑动窗口协议
- 该协议用于网络数据传输时的流量控制,以避免拥塞的发生。协议允许发送方在停止并等待确认前发生多个数据分组,由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据传输,提高网络吞吐量。
13、拥塞控制和流量控制的区别
- 流量控制是,端到端的控制,一端发送数据太快,另一端来不及接收,一般通过滑动窗口的大小的改变实现。
- 拥塞控制,是一端到另外一端之间的网络发生阻塞导致传输过慢或者丢包,来不及传输。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器、以及降低网络性能的所有因素。
14、TCP拥塞控制,算法名字(重要)
- 慢启动,拥塞避免(慢开始门限,加+1,拥塞窗口线性增加,计算慢开始门限,丢包时拥塞窗口的二分之一)
- 快重传(累计确认,接收方计算机知道丢包后,发送三个重复的确认,直接让发送方计算机快速发送丢的包)
- 快恢复(将慢开始门限设为拥塞窗口值,直接进入加法增加拥塞窗口),选择性应答。
15、HTTP协议与TCP协议的联系
- TCP是传输层通讯协议,定义的是数据传输和连接方式的规范。
- HTTP是应用层协议,定义的是传输数据的内容规范。
- HTTP是基于TCP连接基础上的,TCP单纯建立连接,不涉及任何我们需要的请求数据,HTTP是来收发数据。
- TCP是HTTP进行端对端的数据交互时的数据请求方式;HTTP是TCP进行虚拟线路连接时获得服务端位置——端口号的来源。
16、http的请求方法有哪些?get和post的区别
GET | POST | |
---|---|---|
可见性 | 数据在URL中对所有人可见 | 数据不会显示在URL中 |
安全性 | 与POST相比,get的安全性较差,因为所发送的数据是URL的一部分 | 安全,因为参数不会被保存在浏览器历史或web服务器日志中 |
数据长度 | 受限制,最长2kb | 无限制 |
编码类型 | application/x-www-form-urlencoded | multipart/form-data |
缓存 | 能被缓存 | 不能被缓存 |
- get和post是http两个常用的请求方法。
- get和post本质上都是TCP连接,只是HTTP和浏览器/服务器不同的限制使它们不同。
限制区别:
(1)get请求的数据会附近在URL之后,而post请求会把请求数据放置在HTTP请求包的包体中。
(2)输出数据的大小,对于get,特定的浏览器和服务器有长度限制,一般2K,而post没有
(3)post的安全性比get的安全性高。比如get请求的用户密码会暴露在URL上。
最大区别:
get产生一个TCP数据包,post产生两个数据包。
对于get方式请求,浏览器会把http的header和data一起发送出去,服务器响应200(返回数据)
对于post,浏览器先发送header,服务器响应100 continue,浏览器再发data,服务器响应200(返回数据)
17、http状态码
- 1XX——信息提示,服务器收到请求,需要请求者继续执行操作;.
- 2XX——成功,操作被成功接收并处理;
- 3XX——重定位,需要进一步的操作以完成请求;
- 4XX——客户端错误,请求包含语法错误或无法完成请求;
- 5XX——服务器错误,服务器在处理请求的过程中发生了错误。
常见状态码 - 100:继续,客户端应继请求;
- 200:请求成功;
- 301:资源(网页等)被永久转移到其他URL;
- 302:Found——暂时重定向;
- 403:禁止访问;
- 404:请求的资源(网页等)不存在;
- 500:内部服务器错误。
18、数字证书
- 数字证书是数字形式的标识,与护照等十分相似。
- 数字证书是数字凭证,它提供有关实体标识的信息以及其他支持信息。
- 数字证书是由证书权威机构颁发的,因此有该权威机构保证证书信息的有效性,此外,数字证书只在特定的时间段有效。
- 数字证书的结构必须采用一种可理解且可靠的形式,以便人们可以轻松地检索并理解证书内的信息。
19、ARP是地址解析协议,简单语言解释一下工作原理
- 1、首先,每个主机都会在自己的**ARP缓冲区中建立一个ARP列表,**以表示IP地址和MAC地址之间的对应关系。
- 2、当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
- 3、当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
- 4、源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
- 广播发送ARP请求,单播发送ARP响应
20、各种协议
- ICMP协议:因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
- TFTP协议:是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
- HTTP协议:超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
- DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。
- NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术。
- DHCP协议:一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
21、HTTP1.0、1.1、2.0之间的区别
- HTTP1.0:默认使用Connection:close,浏览器每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
- HTTP1.1:默认使用Connection:keep-alive(长连接),避免了连接建立和释放的开销;通过Content-Length字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。
- HTTP2.0:引入二进制数据帧和流的概念,其中帧对数据进行顺序标识;因为有了序列,服务器可以并行的传输数据。
22、http1.0和http1.1的主要区别如下:
- 缓存处理:http1.1添加更多的缓存控制策略(如:Entity tag,If-Match)
- 网络连接的优化:http1.1支持断点续传
- 错误状态码的增多:http1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态
- Host头处理:支持Host头域,不在以IP为请求方标志
- 长连接:减少了建立和关闭连接的消耗和延迟。
23、http1.1和http2.0的主要区别
- 新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式
- 多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成 正常的请求)
- header压缩:由于1.X中header带有大量的信息,并且要重复传输,http2.0使用encoder来减少需要传输的header大小
- 服务端推送:同google的SPDUY(1.0的一种升级)一样
24、同步套接字和异步套接字的区别
- 在同步模式中,对执行网络操作的函数(如Send和receive)的调用一直等到操作完成后才将控制权返回给调用程序;
- 在异步模式中,这些调用立即返回控制权;
25、交换机
- 在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。
- 交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上 ,通过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。
- 交换机工作于数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
- 交换机被广泛应用于二层网络交换,俗称“二层交换机”。
- 交换机的种类
- 二层交换机工作于数据链路层
- 三层交换机工作于网络层
- 四层交换机工作于传输层
- 七层交换机工作于应用层
26、路由器
- 路由器是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。
- 路由器工作在网络层
- 路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。
27、网关
- 网关,顾名思义就是连接两个网络的设备,区别于路由器(由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP),经常在家庭中或者小型企业网络中使用,用于连接局域网和Internet。
- 网关也经常指把一种协议转成另一种协议的设备,比如语音网关。