1:计算机网络
1:Http请求的过程与原理(http交互过程和从浏览器地址输入url到显示主页的过程)
一种:
缓存解析:浏览器获取URL后,先去缓存中查找资源,从浏览器缓存-系统缓存-路由器缓存中查看;
如果有就从缓存中显示界面,不再发送请求; 如果没有,则发送HTTP请求。
域名解析:发现缓存中没有资源,发送HTTP请求; 在发送HTTP请求之前,需要进行DNS解析(域名解析);
DNS解析(递归和迭代查询):域名到IP地址的转换过程,域名的解析工作由DNS服务器完成,解析后可以获取域名相应的IP地址。
TCP连接:三次握手在域名解析后,浏览器向服务器发起了HTTP请求,
TCP连接;因为TCP协议时面向连接的,所以在传输数据前必须建立连接,即三次握手;TCP连接建立后,浏览器开始向服务器发送HTTP请求报文。
收到请求:服务器收到浏览器发送的请求信息,返回响应。
页面渲染:浏览器收到服务器发送的响应,显示页面内容。
2:tcp三次握手
1:基础:TCP报文是由首部和数据载荷两部分组成,它的功能由首部各字段的作用体现,TCP首部格式由固定首部(20个字节)和扩展首部(最大40个字节),也就是首部长度到20-60
2:固定首部的字段有
源端口
目的端口
序号:seq(数据载荷的第一个字节的序号)
确认号:(比如ack确认号为n,说明已接受序号n-1为止的所有数据,期望下次接受序号为n的数据,当确认标识位ACK=1时确认号字段有效,ACK=0时确认号无效),
数据偏移:(以4字节为单位):TCP报文的起始到数据载荷起始的长度,也就是首部长度(20-60字节之间),它的范围在二进制0101(对应十进制5)-1111(对应十进制15)
保留字段:以后使用,现在设置为0
窗口字段:流量控制(接受和拥塞窗口取最小值)
校验和:检查传输过程中是否出现误码,在TCP报文段加上伪首部
紧急指针:当URG=1有效,紧急数据直接上交应用进程,不需要在接受缓存中排队
同步标志位SYN:SYN=1是TCP连接的同步序号
确认标志位ACK:ACK=1确认报文
终止标志位FIN:TCP释放连接
复位标识位RST:释放连接在建立连接
3:三次握手流程
1:客户端同步请求(SYN=1,seq=x初始序号)
2:服务端同步确认(SYN=1,ACK=1)
seq=y ack=x+1(确认已接受了序号为x的数据)
3:客户端确认(Ack=1)普通确认段
seq =x+1(以前发送的是x,现在是x+1)
ack =y+1(已接受服务器端序号为y的数据)
4:四次挥手
1:客户端确认终止连接(Fin=1,Ack=1)
seq=u(之前客户端发送的数据序号+1) ack=v(已接到服务器V—1序号的数据)
2:服务器确认连接(Ack=1)
seq=v(客户端已接受了v-1的数据) ack=u+1
3:服务器确认终止连接(F in=1,Ack=1)
seq=w(不是v+1,在半关闭状态下,服务端可能已发送部分数据)
ack=u+1(是对之前客户端数据的在次确认)
4:客户端确认连接(Ack=1)
seq=u+1(第一次客户端确认终止发送的数据序号是u)
ack=w+1(服务器确认终止发送的数据序号是w)
在等待2MSL关闭
3:get和post区别
1:编码格式----GET请求只能进行url编码(十六进制的ascii码),而POST支持多种编码方式
2:请求参数----GET请求参数放在url里面,POST参数放在请求体里面。get也可以放请求体但是会被浏览器过滤掉
3:长度限制----GET请求的长度根据当前浏览器规格设定,一般限制2048字符,POST没有
4:GET请求可以被浏览器缓存,POST请求不可以缓存
5:安全性---GET请求的参数放在url里面不太安全,Post参数放在请求体里面相对安全
6:访问方式---GET请求可以直接通过浏览器访问,支持刷新和后退,POST不能直接用浏览器访问,刷新后数据重新发送
7:数据包数量---get传输一个TCP数据包,post传输两个TCP数据包 ,对于post,先发送头部信息,服务器响应100 continue,在发送数据,服务器响应200返回数据 ,也就是第一次确认服务器和网络没异常,才会第二次真正的提交数据
4:Session和Cookie的区别
Cookie:就是请求信息的临时文件,服务器响应有set-cookie字段内容保留在客户端,当客户端请求同类资源时,会把cookie一起携带发送到服务器
Session:就是比如用户登录,请求会把用户名和密码表单信息发送给服务器,服务器会生成session并创建一个session id 的cookie,它的值映射了服务器的session,客户端收到cookie后,会把session id保存在cookie中,
之后请求会把cookie带上,服务器会提取cookie中的session id读取用户信息
区别:
1:cookie存在客户端,但不能跨浏览器,容易被窃取,session存在服务器端,相对安全
2:生命周期不一样,cookie是累计的,创建时就开始记时,比如创建30分钟后就失效,session是间隔的,比如30分钟内没有在次访问session就失效
3:存储大小,但个cookie不超过4k,session没有限制,但存在太多会消耗服务器资源,需要设置删除机制
4:存储类型,Cookie只能存字符串类型,Session没有限制
5:TCP和UDP的区别
1:TCP只支持单播(一对一),UDP单播,多播,广播(一对一,一对多,一对全)
2:TCP是面向字节流,UDP是面向应用报文
3:TCP是提供可靠传输(比如文件传输) UDP是提供不可靠传输(比如ip电话,视频会议等实时场景)
4:TCP报文首部字节在20--60之间,UDP报文首部字节只有8个
5:TCP有流量和拥塞控制,UDP没有
6:HTTP和HTTPS的区别
1:端口 ----HTTP是80端口 HTTPS是443端口
2:安全-----HTTP是明文传输,HTTPS使用SSL协议加密
3:速度-----HTTP协议相对简单,通讯速度快 ,HTTPS由于需要加解密,消耗更多cpu和内存资源,通讯速度相对较慢
4:经济性----HTTP协议是免费使用的,而 HTTPS 协议需要到CA机构缴费申请证书
7:网络七层模型
应用层---表示层--会话层--传输层--网络层--数据链路层--物理层
应用层---传输层(tcp udp)--网络层(ip,路由器)--数据链路层(交换机)--物理层

浙公网安备 33010602011771号