TCP/HTTP
特点:面向连接,可靠传输
HTTP方法
常用:GET(查)/POST(改)/PUT(增)/DELETE(删) 其他:HEAD/OPTIONS/TRACE/CONNECT
GET请求参数一般是拼接在URL中的,而且从方法语义上来讲GET不会修改服务端内容,是可以缓存的、幂等的。
HTTP状态码含义
1xx:代表请求已被接受,需要继续处理。但是HTTP/1.0协议没有定义该状态码,所以基本现实没有使用。 2xx:代表请求成功。 3xx:代表请求已重定向,客户端需要再次发起请求。 4xx:客户端发生错误,请求无法被服务器正确处理。 5xx:服务器端异常。
TCP连接建立断开流程
三次握手:打一个形象的比喻,HTTP连接的建立就像打电话,客户端像服务端拨打电话(请求握手),服务端接听电话并说了一句喂(握手并确认连接),你回复一句是我(确认连接),然后balalala..
至于为什么要三次握手而不是两次,可以设想这种情况,客户端发送的连接请求报文在网络节点中长时间滞留后终于到达服务器(超时),但这时在客户端中已经认为这个请求失效了,服务端在收到请求后向客户端发送确认并建立连接的话客户端并不会回应,这样服务端的资源就被白白浪费了。
四次挥手 为什么建立连接要三次而断开要四次:一方发起关闭连接时,另一端端收到FIN报文时,很可能并不会立即关闭SOCKET(可能有些数据没有接收完),所以只能先回复一个ACK报文,告知请求端,"你发的FIN报文我收到了"。只有等到我接受端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
HTTP特点
短连接:keep-alive持久连接 无状态:Session,cookie
HTTPS
HTTPS=HTTP+SSL/TLS 多了一个加密协议层
证书、非对称加密、对称加密
HTTP无连接如何解决
Cookie/Session cookie是状态存储在客户端,session是状态保存在服务端。 客户端cookie的安全问题:1.不存储敏感数据 2.加密/仅在https中使用 3.设置httpOnly禁止js访问cookie