【2019秋冬】【面经】计算机网络

HTTP

HTTP格式
http请求报文:请求行,请求头,空行,请求数据
请求行:请求方法+URL+http版本

http响应报文:状态码,http头,空行,主体

请求方法
请求报文中,8个
“options” 返回支持的请求方法
“head” 与get相同,响应体不会被返回
“get” 向特定资源发出请求
“post” 向特定资源提交数据
“put” 向特定资源上传最新内容
“delete” 删除资源
“trace” 回显服务器请求
“connect” 将连接方式改为管道

http状态码
2XX 服务器

3XX 重定向

4XX 请求错误
401未授权
403 禁止
404 未找到
408 超时

5XX服务器错误
502 错误网关
503 服务不可用
504 网关超时

http传参数方法
1.在URL中传参,get方法
2.在body中放置参数,post方法

http请求过程
1.客户端连接到服务器
2.发送http请求报文
3.服务器响应并返回响应报文
4.释放TCP连接
5.浏览HTML内容

在浏览器输入URL地址到显示主页过程
1.浏览器通过DNS查找域名IP
2.浏览器向web服务发送一个http请求(cookie)
3.服务器处理请求并返回一个HTML响应
4.浏览器查看HTML内容

get post 区别
get发送的数据更小,更不安全
post不能被缓存,更安全,可以发送大量数据

长连接 短连接
http1.0默认使用短连接,建立一次连接后立即释放
http1.1默认支持长连接,添加keep—alive,当一个网页打开完成后,TCP连接不会立即关闭

长连接适用于操作频繁,点对点
web网站一般使用短连接

转发 与 重定向
转发是服务器行为
重定向是客户端行为

http1.0 / 1.1区别
1.0默认短连接,1.1默认长连接
1.0没有host域,1.1支持host域
1.1支持只发送header信息,不带body
1.1允许只请求资源的某个部分,节约了带宽和连接

http1.0 / 2.0区别
1.0解析基于文本,2.0基于二进制格式,更方便更多用
1.0需要等待上一次发送完并回复才能发送下一个,2.0支持多路复用,可以同时发送多个请求
1.0的header中带有大量信息,并重复发送,2.0对头部进行压缩,通过维护动态链表减少重复
2.0在客户端请求HTML时直接把css,js也一起发送,1.0需要分别请求多次

TCP UDP

TCP UDP 区别 (6大点)
tcp可靠连接;udp不可靠,无连接
tcp面向字节流;udp面向报文
tcp效率低,速度慢;udp效率高,速度快
tcp全双工;udp一对一,一对多
tcp有流量控制和拥塞控制;udp无
tcp适用于对准确性要求较高的场景,如文件传输;udp适用于通信,要求速度,对丢包要求低

TCP UDP 对应协议及端口
TCP:
FTP 21 文件传输
Telnet 23 远程登录
SMTP 25 发送邮件
POP3 110 接收邮件

UDP:
DNS 53 域名解析
SNMP 161 网络管理
TFTP 69 文件传输

TCP三次握手
1.客户端发送SYN=1的数据包至服务器端
2.服务器端返回SYN=1,ACK=1的数据包
3.客户端发送ACK=1的数据包,连接成功

为什么是三次握手不是两次
为了防止已经失效的连接请求突然又传送至服务器端,从而产生错误

TCP四次挥手
1.客户端发送一个FIN=1的数据包至服务器端,关闭对服务器端的数据传输
2.服务器端返回一个ACK=1的数据包
3.服务器端发送一个FIN=1的数据包至客户端,关闭对客户端的数据传输
4.客户端返回一个ACK=1的数据包

为什么是四次挥手
因为当一方释放连接后,会进入半关闭状态,当另一方没有数据传输时,会再次释放连接,所以是四次

状态转移
三次握手
1.客户端主动打开,从closed开始
2.客户端发送SYN,变为SYN—SENT
服务端被动打开,从closed变listen
3.服务端收到SYN,listen变为SYN—RCVD,返回ACK,SYN
4.客户端收到ACK,SYN,变为Established,链接建立,发送ACK
5.服务端收到ACK,变为Established

四次挥手
1.客户端主动断开,发送FIN,ACK,从established变为Fin—wait1
2.服务器收到,回复ACK,变为Close—wait
3.客户端收到ACK后变为FIN—wait2
4.服务器把数据全部传输完毕后,发送FIN,ACK,变为LAST—ACK
5.客户端收到,回复ACK,变为Time—wait,后关闭
6.服务器收到,变为CLosed

TCP如何保证可靠性传输
1.确认重传,接收方收到便立即确认,发送方没有收到确认就立即重传
2.数据校验,若校验发现错误直接丢弃等待重传
3.数据合理分片和排序
4.流量控制和拥塞控制

流量控制/滑动窗口
流量控制通过滑动窗口实现,接收方告诉发送方自己接收窗口的大小,发送的发送窗口不能超过该值
如果字节没有按序收到,接受者只确认最后一个有序字节,其他全部重新发送

拥塞控制
拥塞控制方法:慢开始;拥塞避免;快重传快恢复
慢开始
由小到大逐渐增大拥塞窗口大小(指数级增加)
拥塞避免
让拥塞窗口加法增长,速度变慢

拥塞窗口小于阈值,慢开始;到达阈值,改用拥塞避免;到达网络拥塞将阈值变为当前拥塞值的一半,拥塞窗口变为1,进行慢开始(图)

快重传
接收方在收到一个失序的报文段就立即发出重复确认
快恢复
发送方连续收到三个重复确认就将阈值减半;如果没有收到好几个重复确认,就将拥塞窗口值设为阈值大小,进行拥塞避免算法

拥塞窗口小于阈值,慢开始;到达阈值,改用拥塞避免;收到三个重复确认,改用快重传,新的阈值为当前拥塞值一半,作为快恢复的开始值,执行拥塞避免算法

TCP监听了一个端口后,UDP还能否监听此端口
可以,因为TCP UDP 是两个独立的软件模块,端口号也相互独立,不冲突

网络分层

OSI七层

物理层
数据链路层
网络层
传输层
会话层
表示层
应用层

TCP/IP 四层

数据链路层
网络层
传输层
应用层

ping命令在哪层?
ping命令实际上是发送ICMP请求报文,所以在网络层

http基于什么协议?
http是基于tcp协议的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值