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

  1. 浏览器会解析网址,解析出域名,资源路径,端口等信息,构造HTTP请求报文
  2. 将域名解析为IP地址,先查看系统缓存是否有域名信息,有的话返回IP地址;没有就查看本地host文件没有域名信息,有就返回IP地址;如果再没有就查看本地DNS服务器,如果本地DNS服务器中有域名信息,就返回IP地址,否则本地DNS服务器分别去根域名服务器->顶级域名服务器->权威域名服务器询问,最后拿到IP地址
  3. HTTP协议是基于TCP协议传输的,所以要先进行TCP三次握手,
  4. 然后到网络层,加上IP头,同时填上目标IP地址和源IP地址
  5. 然后到数据链路层,通过ARP协议,获取路由器的MAC地址,然后加上MAC头,填上目标MAC地址和源MAC地址
  6. 然后到物理层,直接把数据包转发给路由器,路由器再通过下一跳,找到最终的目的服务器
  7. 当双方完成三次握手后,如果是HTTP协议,客户端就会把HTTP请求发送给目标服务器;如果是HTTPS协议,还需要进行TLS四次握手,客户端才会把HTTP报文发送给目标服务器
  8. 目标服务器收到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报文,报告端口不可用