计算机网络
1.三次握手
第一次客户端发送syn向服务端,第二次服务端返回ack和syn到客户端,第三次客户点返回ack。
三次握手的目的就是为了建立可靠的通信信道,经过三次握手,双方都可以确认自己和对方的发送和接收是正常的。
第二次握手服务端返回syn即告诉客户端,我接受的消息确实是你发送给我的。
2.四次挥手
第一次,主动关闭方发送一个fin到被动关闭方,用来告知自己想关闭信道
第二次,被动方返回ack,确认收到主动关闭方信息。但是此时被动关闭方可能还有消息没有传完
第三次,被动方消息传完后,发送fin到主动方
第四次,主动方返回ack确认消息
3.TCP如何保证可靠传输
- 分块:应用程序被分割成tcp认为最适合发送的块
- 编号:tcp对发送的包编号,接收端根据编号排序
- 校验和:覆盖tcp首部和数据,如果传输过程中检测数据发生变化,校验和就会改变,接收端将丢弃这个报文段且不确认接收。
- 丢弃重复数据
- 流量控制(滑动窗口):接收端只允许发送端发送缓冲区能容纳的数据
- 拥塞控制:网络拥塞时减少数据的发送
- ARQ协议自动重传请求
4.ARQ协议
ARQ:自动重传请求,包括停止等待ARQ协议和连续ARQ协议
- 停止等待ARQ:每发完一个分组就停止传输,等待对方确认。若超时后还是没有ack确认,说明没有发送成功,重新发送,直到收到确认再发下一个分组。超时时间应该把比平均往返时间更长
- 连续ARQ:发送方维持一个发送窗口,凡是窗口内的分组可以连续发送,不需要等待确认。接收方采用累计确认,对按序到达的最后一个分组发送确认。会发生Go-Back-N
5.滑动窗口和流量控制
为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。
6. 拥塞控制
tcp发送方维持一个拥塞窗口,窗口的大小取决于网络的拥塞程度,动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方接受窗口中较小的一个。
- 慢启动:先探测网络状况,由小到大逐渐增大窗口。初始为1,每个传播轮次加倍
- 拥塞避免:缓慢增大窗口,每一个往返时间加1
- 快重传与快恢复:如果接收器接收到了一个不按顺序的数据,向发送机发送一个重复确认。如果发送机接收到了3个重复确认,就会认定数据丢失并立即重传。不会因为重传而被要求暂停
7.打开一个网页的流程
-
DNS解析 -
TCP连接 -
发送http请求 -
服务端处理请求并返回http报文 -
浏览器解析渲染界面 -
连接结束
8.HTTP如何保存用户状态
http是一个无状态协议,Session机制的存在解决了保存用户状态的问题。
服务端给特定的用户创建特定的Session来标识、跟踪这个客户
保存Session的方法,常用内存或数据库,比如redis,大部分情况是在cookie中附加一个sessionId
9. Cookie
cookie一般用来保存用户信息
session通过服务端记录用户的状态,典型例子购物车
10.HTTP1.0和HTTP1.1主要区别
- 长连接:1.0默认短链接
- 响应码增加
- 缓存处理
- 带宽优化
|