计算机网络面试复习(基础)

浏览器输入URL后发生了什么?

  1. DNS解析,解析输入的网址
  2. 查找到之后,客户端与对应IP建立TCP连接。
  3. 客户端发送HTTP请求
  4. 服务器处理并返回HTTP报文
  5. 客户端接收数据渲染页面

DNS解析过程

  1. 浏览器先在本地hosts文件中查找是否存有该地址映射
  2. 在本地DNS缓存中查找是否拥有该地址映射
  3. 根据本机设置的首选服务器前往本地务器查找
  4. 如果本地服务器根据有没有设置转发来执行,没有设置则发给13台根服务器判断属于哪一个并查找。设置过则依次发给上一级查找
    客户端与DNS服务器是递归查询
    DNS服务器之间是迭代查询

TCP建立连接

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生,给字节编上序号后,就给每一个报文段指派一个序号,序列号seq就是这个报文段中的第一个字节的数据编号。
确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号,序列号表示报文段携带数据的第一个字节的编号,而确认号指的是期望接受到下一个字节的编号,因此挡墙报文段最后一个字节的编号+1即是确认号。
确认ACK:占1个比特位,仅当ACK=1,确认号字段才有效。ACK=0,确认号无效。
同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使用SYN=1,ACK=1.因此,SYN=1表示这是一个连接请求,或连接接收报文,SYN这个标志位只有在TCP建立连接才会被置为1,握手完成后SYN标志位被置为0.
终止FIN 当FIN=1时表示传输完成,请求断开
ACK、FIN这些大写字母表示标志位,ack、seq小写字母表示序号

三次握手过程:
  1. 客户端发送 SYN=1、seq=x 请求连接 客户端client进入SYN-SENT状态
  2. 服务器收到,返回 SYN=1、ACK=1、seq=y、ack=x+1。服务器server进入SYN-RCVD状态
  3. 客户端收到,返回ACK=1、ack=y+1、seq=x+1 客户端和服务器先后进入 ESTAB-LISHED状态
为什么要进行三次握手(两次不行吗)

如果两次握手,服务器一收到连接请求就会进入连接状态,但是如果客户端的连接请求是一个失效的请求或者服务器的确认请求客户端没有收到。都会造成只有服务器进入连接状态,浪费资源。

四次挥手过程

关闭过程可以由客户端和服务器任意一端发起(这里假设客户端发起)

  1. 客户端发送 FIN=1、seq=u 请求断开连接。客户端进入 FIN-wait状态
  2. 服务器收到,服务器发送ACK=1、seq=v、ack=u+1. 服务器通知上层进程连接要关闭了,发完这点不要再发了。服务器进入 Close-wait状态
  3. 服务器等待进程传输完,服务器发送 FIN=1、ACK=1、seq=w、ack=u+1,服务器进入LAST-ACK状态
  4. 客户端收到,客户端发送FIN=1、ACK=1、seq=u+1、ack=w+1,客户端进入 TIME-wait状态,等他带2**MSL后CLOSED
  5. 服务器收到,服务器进入CLOSED
为什么要进行四次挥手,三次不行吗?

因为建立连接时,服务器收到请求回复可以同时发送 SYN和ACK,其中SYN是同步报文,ACK是确认报文。但是断开连接时,无法同时发送,服务器要等待上层应用发送完毕后才能发送FIN,所以只能先发送ACK报文给客户端,告诉它断开请求收到了。等待应用发送完后,在给客户端发送FIN报文确认关闭。

为什么客户端要经过2MSL时间才会关闭

客户端client在发送完最后一个报文端ACK之后,再经过2MSL的时间,就可以是本次连接持续时间内的所有产生的报文段都消失,这样客户端可以确定服务器收到了确认报文。就可以关闭了。

TCP和UDP的区别

两者都工作在传输层
TCP面向连接的,提供可靠的字节流服务,确保字节按顺序发送。因为是字节流,所以可能出现粘包问题,这个给包指应用层的数据包。
传输数据时提供:校验和、超时重传、滑动窗口、拥塞控制等方法确保可靠性。
UDP面向无连接,不可靠,面向报文。能够明确两个数据包,避免粘包问题,传输速度快
应用场景
在高速传播、可靠性要求不大、追求速率的情况下可以使用UDP(即时通信、语音、视频电话)
在发送大量数据且对可靠性有要求的情况下可以使用TCP(文件传输、远程登陆、接发邮件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值