跳转至

面试题

好未来后端

URL从输入到响应的流程?

  • 解析 URL:分析 URL 所需要使用的传输协议和请求的资源路径。如果输入的 URL 中的协议或者主机名不合法,将会把地址栏中输入的内容传递给搜索引擎。如果没有问题,浏览器会检查 URL 中是否出现了非法字符,则对非法字符进行转义后在进行下一过程。

  • 缓存判断:浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里且没有失效,那么就直接使用,否则向服务器发起新的请求。

  • DNS 解析:如果资源不在本地缓存,首先需要进行 DNS 解析。浏览器会向本地 DNS 服务器发送域名解析请求,本地 DNS 服务器会逐级查询,最终找到对应的IP地址。

  • 获取 MAC 地址:当浏览器得到 IP 地址后,数据传输还需要知道目的主机 MAC 地址,因为应用层下发数据给传输层,TCP 协议会指定源端口号和目的端口号,然后下发给网络层。网络层会将本机地址作为源地址,获取的 IP 地址作为目的地址。然后将下发给数据链路层,数据链路层的发送需要加入通信双方的 MAC 地址,本机的 MAC 地址作为源 MAC 地址,目的 MAC 地址需要分情况处理。通过将 IP 地址与本机的子网掩码相结合,可以判断是否与请求主机在同一个子网里,如果在同一个子网里,可以使用 APR 协议获取到目的主机的 MAC 地址,如果不在一个子网里,那么请求应该转发给网关,由它代为转发,此时同样可以通过 ARP 协议来获取网关的 MAC 地址,此时目的主机的 MAC 地址应该为网关的地址。

  • 建立 TCP 连接:主机将使用目标 IP 地址和目标 MAC 地址发送一个 TCP SYN 包,请求建立一个 TCP 连接,然后交给路由器转发,等路由器转到目标服务器后,服务器回复一个 SYN-ACK 包,确认连接请求。然后,主机发送一个 ACK 包,确认已收到服务器的确认,然后 TCP 连接建立完成。

  • HTTPS 的 TLS 四次握手:如果使用的是 HTTPS 协议,在通信前还存在 TLS 的四次握手。

  • 发送 HTTP 请求:连接建立后,浏览器会向服务器发送 HTTP 请求。请求中包含了用户需要获取的资源的信息,例如网页的 URL、请求方法(GET、POST 等)等。

  • 服务器处理请求并返回响应:服务器收到请求后,会根据请求的内容进行相应的处理。例如,如果是请求网页,服务器会读取相应的网页文件,并生成HTTP响应。

追问:TCP 连接除了 IP 地址还需要什么?

还需要端口号,端口号用于标识一个主机上的特定服务或进程。

  • 源端口号是发送端应用程序使用的端口,它是一个 16 位的数字,范围从 0 到 65535。一般来说,客户端通常使用一个大于 1023 的临时端口号。

  • 目的端口号是接收端应用程序使用的端口,不同的服务通常使用固定的知名端口号,例如 HTTP 使用端口 80 或 8080,HTTPS 使用端口 443,FTP 使用端口 21 等。

追问:流程在传输层做了什么事情?

主要有以下这些事情:

  • 建立连接:TCP 三次握手连接的建立,这个过程中会确定双方的初始序列号和滑动窗口大小
  • 数据传输 :当应用层的数据传递给传输层时,TCP 会将较大的数据分割成适合在网络中传输的较小的段,并为每个段添加 TCP 头部,包括序列号、确认号、窗口大小等信息。当接收方收到 TCP 段后,会发送 ACK 数据包来确认收到的数据。客户端根据服务器的 ACK 和窗口大小调整数据发送速度,继续发送后续 TCP 段。如果发送方在一定时间内没有收到 ACK,会认为数据丢失,会重传相应的 TCP 段,这个时间间隔称为超时重传时间(RTO)。
  • 关闭连接:关闭 TCP 连接时,会进行四次挥手过程。

追问:流程在网络层做了什么事情?

  • 传输层的 TCP 段传递到网络层,网络层将其封装成 IP 数据包,设置源 IP 地址和目的 IP 地址,添加其他 IP 头部信息。

  • 路由器根据 IP 数据包的目的 IP 地址和自己的路由表进行路由选择,如果数据超过 MTU 大小,就会对数据包进行分片。

  • 数据包在网络中传输,经过多个路由器,每个路由器都会根据路由表转发数据包,并递减 TTL。

  • 当数据包到达目的主机,网络层进行解封和重组操作,将 TCP 段传递给传输层。

追问:TCP有TCP的分段,IP层有IP分片。这两个有什么区别?现在用的是哪个?

两者的区别:

  • TCP 分段:发生在传输层,由 TCP 协议执行。当 TCP 从应用层接收到较大的数据块,超过 MSS 大小之后,会将其分成多个较小的 TCP 段,每个 TCP 段都包含 TCP 头部,接收方根据 TCP 段的序列号将它们重新组装成完整的数据块,然后传递给应用层。
  • IP 分片:发生在网络层,由 IP 协议执行。当 IP 数据包的大小超过链路层的最大传输单元(MTU)时,IP 会将数据包分成多个较小的分片。每个 IP 分片包含 IP 头部,由目的主机的网络层进行重组。目的主机根据 IP 分片的标识、标志和片偏移将它们重新组合成原始的 IP 数据包,然后传递给传输层。

TCP 通常会尽量避免 IP 分片,原因是 IP 分片之后,只有第一个分片才有TCP头部信息,那么一旦一个分片丢失,整个数据包都需要重传,会影响传输效率,并且由于 IP 分片是基于网络链路的 MTU,可能会在不同的网络链路中发生多次分片和重组,增加网络设备(如路由器)的处理开销。

在现代网络中,TCP 通常会尽量避免 IP 分片,主要作法是:TCP 在建立连接时,会协商 MSS,它是 TCP 段中数据部分的最大长度,通常是根据链路的 MTU 计算得到。例如,在以太网中,MTU 通常是 1500 字节,TCP 的 MSS 通常是 1460 字节(MTU 减去 IP 头部和 TCP 头部的长度)。这样 TCP 会将数据分成 MSS 大小的段,从而避免在网络层进行 IP 分片,提高传输效率。

拥塞控制介绍一下 ?

  • 连接建立,cwnd = MSS,进入慢启动阶段,每收到一个 ACK,cwnd 翻倍,发送数据量不断增加。

  • 当 cwnd 达到 ssthresh,进入拥塞避免阶段,cwnd 线性增长。

  • 如果发生超时,ssthresh 减半,cwnd 重置为 MSS(1 个 MSS),重新进入慢启动。

  • 当发送方收到三个重复的 ACK 时,认为数据包丢失,但不是因为网络拥塞,而是可能某个数据包的乱序。在快速重传之后,发送方进入快速恢复阶段。通常将 ssthresh 减半,cwnd 设置为 ssthresh 加上 3 倍的 MSS(因为收到了三个重复的 ACK),并继续发送新数据。

常用缩写

  • P2P:Peer to peer 点对点协议

  • TCP:Transmission Control Protocol 传输控制协议

  • UDP:User Datagram Protocol 用户数据报协议

  • FDM:Frequency division multiplexing 频分

  • TDM:Time division multiplexing 时分

  • WDM:Wave division multiplexing 波分

  • VC:virtual circuit 虚电路

  • DSL:digital subscriber line 数字用户线路

  • HFC:Hybird fiber coax 混合光纤同轴网络

  • TP:双绞线

  • ISP:Internet Sevice Providers 网络服务提供商

  • SAP:Services Access Point 服务访问点

  • HTTP:Hyper Text Transfer Protocol 超文本传输协议

  • RTT:round-trip time 往返时间

  • SMTP:Simple Mail Transfer Protocol 简单邮件传输协议

  • MIME:multimedia mail extension 多媒体邮件扩展

  • POP:Post Office Protocol 邮局访问协议

  • IMAP:Internet Mail Access Protocol 邮件访问协议

  • DNS:Domain Name System 域名系统

  • TLD:Top Level Domain 顶级域

  • RR:Resource Records 资源记录

  • DASH:Dynamic,Adaptive Streaming over HTTP

  • CDN:Content Distribution Networks 内容分发网络

  • SDN:Software Defined Networking 软件定义网络

  • RDT:Reliable data transfering 可靠数据传输

  • SR:Selective Repeat 选择重传

  • GBN:Go Back N 回退N步

  • MSS:Maximum Segment Size 最大报文段大小

  • RR:Round Robin 轮询

  • WFQ:Weighted Fair Queuing 加权队列

  • IP:Internet Protocol 网络协议

  • DHCP:Dynamic Host Configuration Protocol 动态主机配置协议

  • NAT:Network Address Translation 网络地址转换

  • LS:Link State 链路状态

  • DV:distance vector 距离向量

  • RIP:Routing Information Protocol 路由信息协议

  • OSPF:Open Shortest Path First 开放的最短路径优先

  • AS:autonomous systems 自治系统

  • BGP:Border Gateway Protocol 边界网关协议

  • eBGP:External Border Gateway Protocol 外部边界网关协议

  • iBGP:internal Border Gateway Protocol 内部边界网关协议

  • ICMP:Internet Control Message Protocol 网络控制报文协议

  • SNMP:Simple Networks Management Protocol 简单网络管理协议

  • CRC:Cyclic Redundancy Check 循环冗余校验

  • MAC:Media Access Control 媒体访问控制

  • TDMA:Time Division Multiple Access 时分多路访问

  • FDMA:Frequency Division Multiple Access 频分多路访问

  • CDMA:Code Division Multiple Access 码分多路访问

  • CSMA:Carrier Sense Multiple Access 载波侦听多路访问

  • CD:Collision Detection 冲突检测

  • CA:Collision Avoidance 冲突避免

  • DOCSIS:Data Over Cable Service Interface Spec 有线电缆数据服务接口规范

  • ARP:Address Resolution Protocol 地址解析协议

  • DES:Data Encryption Standard 数据加密规范

  • AES:Advanced Encryption Standard 先进加密规范

  • KDC:Key Distribution Center 密钥分发中心

  • CA:Certification Authority 证书认证

  • IDS:Intrusion Detection System入侵检测系统

  • DoS:Denial of Service 拒绝服务

  • CIDR:Classless Inter Domain Routing 无类域间路由

  • AIMD:Additive Increase Multiplicative Decrease 和式增乘式减

  • SYN:Synchronize Sequence Number 同步序列编号

  • FTTH:Fiber to The Home 光纤到户

  • AON:Active Optical Network 主动光纤网络

  • PON:Passive Optical Network 被动光纤网络

  • SSL:Secure Sockets Layer 安全套接层

  • PDU:Protocol Data Unit 协议数据单元

  • MTU:Maximum Transmission Unit 最大传输单元