最近重新回顾了计算机网络知识,做一个笔记,便于回顾和复习.
- HTTP常用方法get,post,head,put,delete
- HTTP长连接和短连接长连接-client和sever建立通讯连接后不断开,再进行报文发送和接受,连接一直存在,可用netstat -f inet|grep 567查看,用于点对点通讯;短连接-client和sever每进行一次报文交易才进行连接,交易完毕后立即断开连接,常用语一对多的通讯.
- HTTP和HTTPS区别HTTP是超文本传输传输,信息是明文传输,HTTPS是SSL加密传输,HTTP连接端口是80,HTTPS是443,HTTP连接是无状态的,HTTPS是加密传输,身份认证的,需要ca证书,需要一定的费用.
- HTTP状态码302 临时重定向
303 临时重定向且客户端应采用get方式获取资源
400 请求报文中存在语法错误
401未经许可需要通过HTTP认证
501服务区不具备请求功能
503服务器正常停机维护
405请求的方式不对,需要由post改为get
404 未找到,原因:请求路径错误
502错误网关, 原因 从上游服务器收到无效响应
403 禁止 服务器拒绝请求
500服务器内部错误, 服务器遇到错误,无法完成请求
504 网关超时,服务器没有及时从上游服务器收到请求 - TCP三次握手需要客户端,服务端总共发3个包.在socket编程中由客户端执行connect触发,SYN-请求连接的,ack-确认的,seq序列号,
第一次握手,客户端SYN=1,seq=j(随机),发给sever,
第二次握手,sever收到ACK=1,SYN=1,ack=x+1,seq=k(随机),发给client,
第三次握手,client检查ack是否为J+1,正确则建立连接.ACK=1,seq=x+1,ack=y+1 - TCP四次挥手1)client发送一个FIN,
- server收到FIN,发送一个ACK,确认序号为收到序号+1
3)sever发送一个FIN,关闭数据传送,
4)client收到FIN后发送一个ACK给sever,确认序号为收到序号加1
- 为什么需要四次挥手关闭连接时,sever收到FIN报文时,先回复一个ack,等到sever所有的报文都发送完了才能发送FIN
- HTTPS是怎么加密的: HTTP协议直接放在TCP协议上,而HTTPS在HTTP和TCP中间加上一层加密层SSL,进行内容的加密和认证,加密是变成密文,认证是确认身份,保证通信的安全.
- 对称加密算法:加密和解密使用相同的秘钥,有DES,RC5,IDEA,RC4;
- 非对称加密算法:公钥加密,加密和解密使用不同的秘钥,公钥用于加密,私钥用于解密,典型的有RSA,DSA,DH
- 散列算法:把文件内容通过公开的算法编程固定长度的值,用于验证原文是否被篡改,如MD5,SHA,Base64
- SSL加密过程:握手过程中使用非对称加密来协商秘钥,实际使用对称加密对HTTP内容进行加密传输.
1.客户端发送算法列表和随机数给服务端
2.服务器选择一种算法,并将包含公钥的证书发给客户端
3.客户端对证书进行验证,抽取公钥,产生随机密码串,使用公钥加密信息传输给服务端;
4.客户端和服务端依据随机密码串独立计算出加密和MAC秘钥,
5.客户端发送Mac值,服务端发送Mac值 - 数字证书:身份认证和秘钥分发的功能;HTTPS站点需要与一个证书绑定.
rtmp协议基于应用层,底层为TCP传输,使用TCP长连接传输数据,延时性较低,根据message streamID或chunk streamID传输,三次建立连接,client=>c0,c1,c2;severs0,s1,s2,缺点:量大的话负载较高,很多防火墙会墙rtmp,不会墙HTTP,1S以上延迟,不支持HTML5; - hls协议基于HTTP协议,以识别m3u8文件索引为准,.ts文件播放,三种类型,动态列表,静态列表,全量列表
- TCP和 UDP区别1)TCP面向连接,可靠性高,UDP基于非连接,可靠性低,;
2)TCP需三次握手,重新确认连接过程,会有延时,实时性差,且过程复杂易于攻击,UDP实时性较强,稍安全;
3)TCP首部开销20字节,UDP首部开销8字节,TCP开销大.UDP开销小.
4)TCP有序号机制,确认机制,超时重传机制,保证传输的可靠性,不会出现丢包或乱序,UDP有丢包,
5)TCP只支持点到点的,UDP支持一对一,一对多,多对一,多对多.
可靠性传输用TCP, 实时性要求和高速传输时用UDP. - HTTP无状态是无状态的原因:服务器不保留与客户交易的任何状态.解决办法:客户端cookie 服务端session,
- cookie的实现:是服务端生成的,但发送给客户端,并由客户端保存,发送请求时自动在请求报文中加入cookie发出去
- session:运行需要客户端浏览器支持,需要cookie作为识别标志,服务器向浏览器发送一个名为Jsessionid的cookie,根据该cookie识别是否为同一用户;
- get和post区别get参数位置在URL中,安全性低,post从参数在body中,相对于get安全性高
,get参数大小受限,post参数理论没有限制,
get从服务器获取数据,不做增删改查,post向服务器提交数据,如增删改.