OSI的7层网络模型?各层的协议有什么?
- 应用层:确定进程间通信的性质以及满足用户需要以及提高网络和用户应用
- 表示层:主要解决用户信息的语法表达
- 会话层:复制建立、管理和终止表示层实体之间的通信会话
- 传输层:实现网络不同主机上的用户进程间的数据通信,可靠和不可靠的传输
- 网络层:本层通过IP寻址来建立两个节点之间的连接
- 数据链路层:将上层数据封装成帧,用MAC地址访问媒介
- 物理层:设备之间比特流的传输,物理接口
回答: OSI参考模型有7层,应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 应用层有HTTP、HTTPS,传输层有TCP和UDP协议,网络层有IP、ICMP、ARP协议
网络分层的好处:对各层之间进行解耦,层与层之间不产生关联,比如应用层HTTP协议从HTTP1.1升级到HTTP2.0的时候,不会对传输层和网络层有影响,或者网络层的IPv4协议升级到IPv6协议的时候,不会影响到应用,传输层
TCP/IP协议是将OSI模型的应用层、表示层、会话层统一为应用层,数据链路层和物理层统一为网络接口层
TCP/IP的四层网络模型?
- 应用层
- 传输层
- 网络层
- 数据链路层(网络接口层)
五层因特网协议栈?
应用层、运输层、网络层、链路层、物理层
OSI七层网络协议 | TCP/IP四层概念模型 | 对于网络协议 |
---|---|---|
应用层 — 表示层 — 会话层 | 应用层(4) | HTTP、TFTP、FTP、NFS、WAIS、SMTP – Telnet、Rlogin、SNMP、Gopher – SMTP、DNS |
键入网址场景问题
键入网址后,期间发送了什么?
http/https -> dns -> tcp -> ip -> arp
- 浏览器会解析网址,解析出域名,资源路径,端口等信息,构造HTTP请求报文
- 将域名解析为IP地址,先查看系统缓存是否有域名信息,有的话返回IP地址;没有就查看本地host文件没有域名信息,有就返回IP地址;如果再没有就查看本地DNS服务器,如果本地DNS服务器中有域名信息,就返回IP地址,否则本地DNS服务器分别去根域名服务器->顶级域名服务器->权威域名服务器询问,最后拿到IP地址
- HTTP协议是基于TCP协议传输的,所以要先进行TCP三次握手,
- 然后到网络层,加上IP头,同时填上目标IP地址和源IP地址
- 然后到数据链路层,通过ARP协议,获取路由器的MAC地址,然后加上MAC头,填上目标MAC地址和源MAC地址
- 然后到物理层,直接把数据包转发给路由器,路由器再通过下一跳,找到最终的目的服务器
- 当双方完成三次握手后,如果是HTTP协议,客户端就会把HTTP请求发送给目标服务器;如果是HTTPS协议,还需要进行TLS四次握手,客户端才会把HTTP报文发送给目标服务器
- 目标服务器收到HTTP报文后,返回HTTP响应消息,浏览器对响应消息进行解析渲染,呈现给用户
DNS是如何解析的?属于哪一层的协议?
DNS属于应用层的协议,客户端在进行DNS解析时,首先会查看浏览器和操作系统是否缓存域名对应的IP地址,如果没有就向本地DNS服务器发出查询请求,接着本地DNS向根DNS发送查询请求,根DNS服务器返回顶级域名服务器地址,本地DNS服务器向顶级域名服务器发送查询请求,顶级域名服务器返回权威域名服务器的IP地址,本地DNS服务器再向权威域名服务器发出查询请求,权威域名服务器收到请求后,就返回域名对应的IP地址了,本地DNS服务器返回查询结果给客户端,然后将本次查询得到的结果保存到缓存里,以备下次使用
DNS域名解析使用的是什么协议?
DNS中,域名的解析是通过UDP协议进行的
UPD是一种无连接的传输层协议,提供了一种简单的传输机制,适用于实时性比较高的应用场景。DNS使用UDP协议进行域名解析是因为域名解析是短小且频繁的请求,UDP的无连接特性可以减少建立连接和断开连接的开销,提高传输效率
UPD协议对于TCP协议的缺点是没办法保证数据传输的可靠性,针对这个缺点可以在应用层实现超时重传机制,如果域名解决请求在一定的时间内没有收到响应,那么就重发域名解析
输入域名怎么找到端口号?
http的默认端口是80;https的默认端口号是443; 如果用户指定了端口,可以在url中获取,比如域名:8080,这时候使用的端口是8080
网络传输场景
tcp连接一个不存在的IP地址会发生什么?
- 如果IP地址是局域网内,客户端的内核在发生arp请求的时候,广播这个目标IP是谁的,但是由于网络中不存在这个IP地址,所以没有设备应答,会卡在arp协议,客户端的SYN报文无法发送出去
- 如果这个IP地址不是局域网的,客户端会将SYN报文交给路由器,由路由器继续转发,由于目标IP地址是不存在的,该SYN报文会在网络中消亡;客户端由于一直接收不到SYN报文的确认报文,会触发超时重传机制,直到最大的重试次数,客户端的连接会被释放
tcp连接一个IP地址存在但是端口不存在的服务端会发生什么?
端口不存在的话,代表服务端没有监听这个端口,服务端在接收到客户端的SYN包后,返回RST报文,客户端接收到RST报文后,会断开连接
UDP发送一个IP地址存在但是端口不存在报文会发生什么?
服务端会回ICMP报文,报告端口不可用