面试前你必须知道的网络知识,学到就是赚到

目录

应用层

HTTP协议格式是什么样的

cookie和session的区别

长连接和短连接的区别

HTTP粘包怎么解决

301和302有什么区别

GET和POST有什么区别

HTTPS加密流程是什么样的

HTTP和HTTPS的区别

HTTP不同版本之间的区别

传输层

三次握手以及四次挥手的过程是什么样的

握手为什么是三次,挥手为什么是四次

TIME_WAIT状态有什么用

一台主机上出现大量的CLOSE_WAIT或者TIME_WAIT的原因是什么,怎么解决

握手失败双方是如何处理的

TCP如何实现可靠传输

什么是TCP粘包,怎么解决


应用层

应用层详解请参考:https://blog.csdn.net/m0_46657980/article/details/113643164

  • HTTP协议格式是什么样的

首行(请求首行/响应首行)、头部、空行、正文

  • cookie和session的区别

Cookie是保存在客户端的数据,每次请求服务端时通过Cookie字段发送给服务器来维持客户端状态

Session是保存在服务端的客户端会话信息,服务端为每个客户端创建会话信息保存客户端状态,通过Set-Cookie返回给客户端Session_id防止隐私泄露,维持客户端状态

  • 长连接和短连接的区别

长连接:客户端和服务端建立了连接以后不会断开,然后进行通信(也就是发送报文)。这种方式由于连接一直存在,所以称为长连接

短连接:客户端和服务端每进行一次通信才发起连接,通信完成以后立即断开连接

  • HTTP粘包怎么解决

解决方案:

  • 特殊字符间隔,必须对数据中的特殊字符进行转义操作,否则会造成二义
  • 数据定长:实际数据较小则需要进行补位
  • 在应用层头部中定义数据长度(例如:HTTP协议,UDP协议,根据头部中的数据长度取出数据)
  • 301和302有什么区别

301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址

302重定向只是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的

  • GET和POST有什么区别

(摘自:https://blog.csdn.net/yipiankongbai/article/details/24025633

  1. GET是安全方法,因为使用GET的HTTP请求不会在服务器上修改信息,POST可能会修改服务器上的资源的请求

  2. GET请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。POST请求会把请求的数据放置在HTTP请求包的包体中。因此,GET请求的数据会暴露在地址栏中,而POST请求则不会

  3. 对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制

  4. POST的安全性比GET的高。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了

  • HTTPS加密流程是什么样的

认证服务器->协商会话密钥->加密通信(详细请参考:https://blog.csdn.net/m0_46657980/article/details/113643164

  • HTTP和HTTPS的区别

  1. https协议需要到CA申请证书
  2. http是超文本传输协议,信息是明文传输,https是具有安全性的加密传输协议
  3. http的连接很简单,是无状态的;HTTPS协议是可进行加密传输、身份认证的网络协议,比http协议安全。
  • HTTP不同版本之间的区别

协议版本:0.9  1.0  1.1  2.0

0.9:并没有当前的协议格式,并且只支持HTML数据传输
1.0:完成了HTTP协议格式标准的定义,但是在这一版中并没有过分追求性能(1.0仅支持短连接—简单的请求—响应协议)
1.1:使用最多,支持了更多请求方法以及功能,并且更加追求性能(完善了缓存机制,支持长连接,管线化传输)
2.0:需求规划当中,采用二进制传输

传输层

传输层详解请参考:https://blog.csdn.net/m0_46657980/article/details/113757894

  • 三次握手以及四次挥手的过程是什么样的

  • 握手为什么是三次,挥手为什么是四次

  1. 建立连接握手为什么是三次?TCP是面向连接的,通信两端都必须确认对端有数据收发功能,只是四次没必要,两次不安全
  2. 断开连接挥手为什么是四次?FIN只能表示对方不再发送数据,不表示对方不再接收数据,因此被动关闭方收到断开连接请求并进行回复后,还可以继续发送数据,只有在确认自己不再发送数据时,才会给对方发送FIN,因此挥手是四次

  • TIME_WAIT状态有什么用

进入TIME_WAIT等待一段时间就是为了避免新启动一个socket使用相同的地址信息,受到原有连接的影响

TIME_WAIT等待时间是两个MSL(报文最大生存周期)时间,目的:为了处理有可能重传的FIN,等待对重传的FIN包的确认回复,避免重传的数据对新连接造成影响,TIME_WAIT更多的是为了保护客户端

  • 一台主机上出现大量的CLOSE_WAIT或者TIME_WAIT的原因是什么,怎么解决

  1. 一台主机上出现大量的CLOSE_WAIT状态的socket是什么原因?一旦一台主机上出现了大量的CLOSE_WAIT状态的socket则表示程序中可能在对方关闭连接时没有关闭套接字释放资源,这是一种编程上存在的错误,连接断开但没有关闭套接字
  2. 一台主机上出现大量的TIME_WAIT状态的socket是什么原因?一台主机上出现大量的TIME_WAIT意味着这台主机上进行大量的套接字主动关闭,常见于爬虫服务器

    解决方案:调整TIME_WAIT等待时间;设置套接字选项——地址重用

  • 握手失败双方是如何处理的

server端发送了SYN+ACK报文后就会启动一个定时器,等待client返回的ACK报文

如果第三次握手失败的话client给server返回了ACK报文,server并不能收到这个ACK报文。那么server端就会启动超时重传机制,超过规定时间后重新发送SYN+ACK,重传次数默认是5次

如果重传指定次数到了后,仍然未收到ACK应答,那么一段时间后,server自动关闭这个连接。但是client认为这个连接已经建立,如果client端向server写数据,server端将以RST包(对方要求重新建立连接,把携带RST标识的称为复位报文段)响应

  • TCP如何实现可靠传输

详解请参考:https://blog.csdn.net/m0_46657980/article/details/113757894

安全传输:确认应答机制、超时重传机制、序号+确认序号、校验和

避免丢包:滑动窗口机制、拥塞机制

挽回更多性能损失(性能提高):快速重传机制、捎带应答机制、延迟应答机制

  • 什么是TCP粘包,怎么解决

粘包:TCP在传输层对应用数据边界不敏感,因此需要程序员在应用层进行数据的边界管理

解决方案:

  • 特殊字符间隔,必须对数据中的特殊字符进行转义操作,否则会造成二义
  • 数据定长:实际数据较小则需要进行补位
  • 在应用层头部中定义数据长度(例如:HTTP协议,UDP协议,根据头部中的数据长度取出数据)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值