1.HTTP的3次握手4次挥手
连接创建过程:
首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
连接中断过程:
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,“告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,“告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,“就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
注意:中断连接端可以是Client端,也可以是Server端。
整个过程Client端所经历的状态如下:
Server端所经历的过程如下:
2.为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
声明:前两题转载自https://blog.csdn.net/su_bao/article/details/80845246
3.HTTPS的通讯过程
3.HTTP和HTTPS的区别
https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4.TCP和UDP的区别
TCP是确认包的到达,所以不丢失包(数据),顺序也是好的。
UDP不会确认包的到达,所以可能会丢失数据包,当然顺序也有可能会乱。
除了这些以外:
1. TCP是面向连接(三次握手)的,所以稳定、可靠,那相对就慢了
比如平时的:文件传输,邮件,http等用的都是tcp协议
2. UDP是面向无连接的,所以不稳定,但是相对快,实时性高
比如平时:做什么现场直播,视频通话啥的
当然,大家平时用的QQ就是UDP协议(有没有消息错乱的时候)
MSN用的TCP,所以你感觉很卡,很慢
5.TCP/IP的四层网络模型和ISO七层网络模型
6.常见状态码解释
状态码分类
类别 | 原因 | |
---|---|---|
1xx | Informational(信息性状态码) | 接受的请求正在处理 |
2xx | Success(成功状态码) | 请求正常处理完毕 |
3xx | Redirection(重定向) | 需要进行附加操作以完成请求 |
4xx | Client error(客户端错误) | 客户端请求出错,服务器无法处理请求 |
5xx | Server Error(服务器错误) | 服务器处理请求出错 |
301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL
302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL
301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL)
400 Bad Request:表示请求报文中存在语法错误;
401 Unauthorized:未经许可,需要通过HTTP认证;
403 Forbidden:服务器拒绝该次访问(访问权限出现问题)
404 Not Found:表示服务器上无法找到请求的资源
500 Inter Server Error:表示服务器在执行请求时发生了错误,例如参数不匹配
503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求
7.HTTP的8种请求方式
GET POST PUT DELETE
HEAD TRACE CONNECT OPTIONS