点击一个URL或者从浏览器的输入框输入一个URL,发生的事件(有时候也会问经过哪些协议处理):
浏览器框输入一个网址会发生哪些步骤?
OSI具有七层模型,而TCP/IP协议体系只有四层其中应用层={应用层,表示层,会话层},网络接口层={数据链路层,物理层}
综合两者的话,采用五层模型,即物理层,数据链路层,网络层,传输层,应用层。
层与层之间的透明与传送对等:
对于这个理解的话,书里面说的是数据链路层中透明的传输数据,即无论什么样的比特组合的数据都可以通过数据链路层。物理层透明的传输比特流。
往后延伸会接触到一个协议的概念,协议:控制两个对等实体(或者多个实体)进行通信的规则的集合。在协议的控制下,两个对等体的通信使得本层能够像上一层提供服务,而要实现本层协议,还需要使用下面一层所提供的服务。
协议的实现保证了能够向上层提供服务,使用本层服务的实体只能看见服务而无法看见本层的协议,下面的协议对上面的实体是透明的。(层与层的透明可以支持)
协议是水平的,只有被高一层的实体看得见的功能才叫做服务,上层使用下层的服务必须通过与下层交换一些命令,这些命令叫做原语。
数据链路层中包含两种信道:点对点信道以及广播信道
数据链路层中的协议数据单元称为帧。将数据封装成帧,在一段数据的前后分别添加首部和尾部
MTU(Maximum Transfer Unit)帧的数据部分的长度上线。最大传输单元
透明传输字节填充主要是防止帧定界符的意思被误解,从而填充字节,这样可以保证,帧的每一段的开始和结尾都能够被正确的识别。
CSMA/CD 载波监听多点接入/碰撞检测
多点接入:说明是总线型网络,许多计算机以多点接入的形式连接在一条总线上
载波监听:在发送数据之前先监听总线上是否有其他人在发送数据,有的话就不发,等到空闲之后再发
碰撞检测:表示边发送边监听,即适配器边发送数据边检测信道的信号电压情况,以便判断自己在发送数据时,其他站是否也在发送数据,当几个站同时发送数据时,总线上的信号电压变化将会增大(互相叠加)。表示多个站同时发送数据, 产生了碰撞。
交换机工作在数据链路层。
网络层设计思路:网络层向上提供无连接的,尽最大努力交付的数据报服务,不提供服务质量的承诺。
IP地址和物理地址的区别:
IP地址是网络层和以上的各层使用的地址,是一种逻辑地址,是通过软件来实现的。
物理地址即我们常说的MAC地址,一台机器有一个独一无二的MAC地址,是数据链路层和物理层使用的地址。
ARP协议与RARP协议:目前RARP协议很少单独使用,都是使用DHCP协议来实现。
ARP是用来解决一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。(主要是通过IP地址寻找MAC物理地址)
ARP广播所想要当前MAC地址机器的IP地址,而相应却是单播的,从响应的那一台机器发送回来即可。
IP数据报格式:
标识:16位,数据报长度超过网络的MTU则必须分片。此标识字段的值使分层后的数据最后能正确的冲撞为原来的数据报。
标识:MF(More Fragment),MF=1,表明后面还有分片,如果是0表示当前位最后一个
片位移:13位,较长的分组在分片之后,某片相对于原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。
生存时间:TTL(Time To Live)8位,表明数据包在网络中的寿命,目的是防止无法交互的数据报无限制的在网络中兜圈子,数据报能再英特网中经过的路由最大数值为255
首部校验和:16位,这个字段是只检验数据报的首部,但不包括数据部分。
网络层的分组转发算法流程:
ICMP网际报文控制协议:IP层协议
共有两种报文:ICMP差错报告报文和ICMP询问报文
5种差错报文:
2种询问报文:
ICMP的一个重要应用就是PING命令(分组网间探测 Packet InterNet Groper)用来测试两台主机之间的连通性。
traceroute命令可以用来跟踪一个分组从源点到终点的路径。
传输层是整个网络体系结构中关键层次之一。
传输层向上层的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最底层。
网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
UDP(User Datagram Protocol)用户数据报协议,主要的特点:
UDP用户数据报的首部和伪首部
用户数据报的首部有两个字段:数据字段和首部字段。首部字段很简单:8个字节,由四个字段组成,每个字段两个字节。
TCP(Transmission Control Protocol):传输控制协议,主要特点如下:
TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段还有多少个字节。UDP发送的长度是应用进程给出的。
TCP的连接是通过套接字来实现的,即IP地址:端口号
可靠传输的工作原理:
首先是停止等待协议:没发送完一个分组就停止发送,等待对方的确认,收到确认后再发送下一个分组。
出现差错的话就要使用超时重传机制了。
先看一下TCP报文段的首部格式:TCP虽然是面向字节流的,但是TCP传送的数据单元是数据报文段。
TCP首部有20个字节,UDP只有8个
MSS(Maximum Segment Size)最大报文长度,表示每一个TCP报文段中数据字段的最大长度
TCP可靠传输的实现:
一、以字节为单位的滑动窗口,通过确认号和接收方所允许的接收数据量来构造滑动窗口。
发送缓存:存放的数据为:
接收缓存:存放的数据
3. 按序到达的,但未被接收应用程序读取的数据
4. 未按序到达的数据
超时重传机制,用时间来支持重传机制的实施,具体的时间依靠RTT(报文往返时间)时间来定。
报文每重传一次,就把超时重传的时间RTT增加一些。典型的做法是取新的重传时间为2倍的旧的重传时间。
TCP流量控制:
利用滑动窗口来实现:
A->B A与B之间建立连接之后,A发送一个B所要求的数据大小,且每次B反馈给A自己还能接受多少的数据量
为避免A-B或者B-A报文丢失导致死锁的情况:采用如下方式避免
TCP每次连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值,若窗口值仍然是0,那么收到这个报文段的一方就重新设置计时器,若不是0,则死锁的僵局就打破了。
TCP拥塞控制:有两种策略
TCP的三次握手,四次释放。
DNS(Domain Name System)域名系统
域名到IP地址的解析过程为:当某一个应用进程需要把主机名解析为Ip地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发送给本地域名服务器,本地域名服务器在查找域名时,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址即可进行通信。
名字空间指的是定义了所有可能的名字的集合。
DNS域名的名字空间:根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器。
域名的解析过程:
为了提高DNS查询效率并减轻根域名服务器的负荷和减少因特网上DNS查询报文数量,再域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
FTP文件传输协议,主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP有两种工作方式:Standard也就是PORT方式,主动方式。一种是Passive,PSV表示被动方式。
主动模式是FTP的客户端发送PORT命令到FTP服务器,客户端要求客户端建立控制连接与数据连接,使用的是21和20端口
被动模式是FTP的客户端发送PSV命令到FTP服务器,建立控制连接之后,服务端自觉地创建临时数据连接的接口,告诉客户端咱们两个通过这个端口传输数据。
进行文件传输,FTP的客户端与服务器之间需要建立两个并行的TCP连接,控制连接+数据连接。FTP的控制端口21,数据端口20
HTTP报文的格式:
请求头中常见的参数项:
Host、User-Agent、Referer、Cookie、Range、Accept、Accept-Charset、Accept-Language、Accept-Encoding
响应头常见的参数项:
Server、Set-Cookie、Last-Modified、Location(配合302实现重定向)、Refresh(定时刷新)、Cache-Control(缓存策略)、Content-Type、Content-Encoding、Content-Length
HTTPS:HTTPS是披着SSL外壳的HTTP,HTTPS是一种经由网络进行安全通信的传输协议,经由HTTP进行通信,利用 SSL/TLS建立安全通道加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份的认证,同时保护交互数据的隐私和完整性。
SSL(Secure Sockets Layer)安全套接字层
TLS(Transport Layer Security)安全传输协议,前身是SSL
现在流行的都是使用证书来实现公钥的存放,同时验证服务器的身份安全性。
证书中包括:
模拟客户端和服务器之间的通信过程:
客户端向服务器发送通信请求,服务器端收到请求之后,将服务器中的数字证书发送给客户端,客户端收到数字证书之后,获取到其中的公钥,然后随机生成一个随机字符串利用公钥加密之后发送给服务器(这里就是在验证服务器的身份),服务器收到之后,通过自己的私钥对其进行解密,解密之后在通过自己的私钥对其加密发送给客户端,客户端收到之后,此时用自己的公钥对其解密,如果解密出来的字符串与刚刚自己发的一致,表名服务器的身份是真实的,表明通信环境安全。
然后的话双方就要进行数据的传输了,但是非对称加密算法不适合传输大数据量的数据,所以双方此时需要协商一个堆成加密的公钥和私钥。此时客户端生成对称加密私钥,通过自己的公钥来给这些信息加密,加密之后传输给服务器,服务器利用私钥解密之后,就拿到了双方传输数据的对称加密的私钥了,就可以进行数据的传递了。(对称加密的意思就是客户端用私钥加密,服务器端用私钥解密)
注意:上述的字符串很可能会被拦截,然后被伪装成一串有规律的数字,从而可以套出加密的规律,对私钥具有安全性威胁,这里采用的是,服务器端收到之后,对解析处的字符串做hash操作,客户端收到之后直接比较之前字符串的hash值是否相等即可。
对称加密算法:DES加密算法
非对称加密算法:RSA算法
目前复习到的知识点就是这么多,可能在面试过程中还会继续遇到一些没有见到过的问题,计算机网络大多问的问题都是TCP/UDP,三次握手,四次释放,流量控制,拥塞控制。以及HTTP以及HTTPS,还有常见的加密算法,HTTPS中数字证书发挥出来的作用在哪里,对称加密是什么意思,非对称加密是什么意思。常见的对称加密算法,以及非对称加密算法。