计网
1、TCP三次握手,四次挥手,有什么用?
2、HTTP8种请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE
GET和POST的区别?
-
GET被浏览器强制支持
-
由于URL长度有限制,GET不能代替POST发送大量的数据
-
GET请求发送数据更小
-
GET是不安全的,POST相对于GET是安全的
-
GET是幂等的
-
POST不能被缓存
3、HTTP1.0,1.1,2.0区别
- 1.0默认短连接,1.1及以后默认长连接
- 1.1支持只发送header到服务器
- 1.1有host域这一参数,1.0没有
- 1.1请求头引入range头域,支持只请求资源的一部分,
- 1.X的协议解析是基于文本的,2.0是基于二进制的
- 多路复用,2.0一个连接可以同时发送多个请求彼此互不干扰
- 2.0可以对header进行压缩
- 2.0可以服务器将html所需要的css等推送给请求者,不需要再次发起请求
4、HTTP 状态码
5、http长连接&短链接
- http1.0默认短连接,1.1及以后默认长连接
- 长连接用于频繁操作的点对点的连接,连接数不能太多
- 短连接一般用于Web网站等并发数很高的地方
6、http请求/响应的步骤
-
浏览器根据域名解析得到ip
-
客户端连接到服务器
-
客户端发送请求
-
服务器接受请求并返回http响应
-
释放tcp连接
-
客户端浏览器解析html内容
7、tcp udp区别
- tcp面向连接,udp无连接
- tcp开销较大,对系统资源要求比较多,udp开销小,对系统资源要求少
- udp结构比较简单
- tcp是面向字节流的,udp是面向报文的
- tcp有差错控制、流量控制等来保证数据的可靠性,而udp没有,可能会丢包
- tcp可以对分组进行排序,保证数据的有序,而udp不能保证
- udp的首部是8个字节,tcp至少20字节
8、TCP协议
- ftp:应用层,21端口
- telnet:23端口
- smtp:25端口
- pop3:110端口
- http:80端口
9、udp协议
- dns:53端口
- snmp:161端口
- tftp:69端口
10、tcp三次握手
- 客户端向服务器发送:SYN=1,ACK=0,seq=x
- 服务器向客户端发送:SYN=1,ACK=1,seq=y,ack=x+1
- 客户端向服务器发送:ACK=1,seq=x+1,ack=y+1
11、为什么要三次握手而不是两次?
- 防止已失效的请求报文突然又发送到B,导致发生错误。考虑一种情况,A发送请求建立连接的请求,在某一中间节点滞留,又重发了一次请求,然后与B建立连接,之后第一次发送的请求到达B,如果是2次握手,那B收到A建立连接的请求之后,便会成功建立连接,这样就会建立起一条无用的连接,浪费了带宽,如果是三次握手,那B会向A发出确认,A发现这是已经被丢弃的请求,不会回复B,就不会建立起连接
12、TCP四次挥手
- A向B发送关闭连接的请求,FIN=1,seq=u
- B向A发出确认,ACK=1,seq=v,ack=u+1,连接处于半关闭状态
- B向A发出关闭连接的请求,FIN=1,ACK=1,seq=v+1,ack=u+1
- A向B发出确认,ACK=1,seq=u+1,ack=w+1
13、为什么time_wait要等待2MSL才能关闭
- MSL是报文在网络中的最大存活时间,2MSL就是从发出到收到回复有可能的最长时间,由于网络是不可靠的,最后一个ACK有可能B没有收到,那么B就会重发FIN,那么在2MSL内,如果A再次收到FIN,说明ACK丢失,需要重发ACK,如果没收到FIN,就说明B已经收到了ACK,可以断开连接了。
14、tcp保证可靠性的手段
- 数据包校验
- 失序数据进行排序
- 丢弃重复数据
- 应答机制
- 超时重发
- 流量控制
15、拥塞控制的方法
- 慢启动
- 拥塞避免
- 快重传和快恢复
16、OSI七层
- 物理层:物理通信信道上原始比特流的传输
- 数据链路层:物理寻址,将原始比特流转化为逻辑传输线路,arp,rarp
- 网络层:控制子网的运行,如逻辑编组、路由选择等,各种网关协议,IP,icmp
- 传输层:接受上一层的数据,必要时对数据进行分