文章的目的主要是针对面试官的提问,做出尽可能精简而全面的回答。若读者对某块的知识不能太理解,还请参阅其他大佬比较详细的博客或者专业书籍,谢谢大家。
一、TCP与UDP的区别
二、TCP三次握手与四次挥手
三、为什么要三次挥手,两次行不行
四、为什么客户端最后还需要等待2*MSL
五、为什么建立连接时是三次握手,而释放连接时是四次挥手
六、如果建立了连接客户端出现了故障
七、TCP协议如何保证传输的可靠性
八、HTTP请求/响应报文结构
HTTP请求报文结构:
一个HTTP请求报文由四个部分组成:请求行、请求头部、空行和请求数据。
1.请求行:由请求方法字段、URL字段和HTTP协议版本字段三个字段组成,它们用空格分隔。
2.请求头部:
3.空行:作用就是通过一个空行告诉服务器请求头部到此为止。
4.请求数据:如果方法字段为GET,则此项为空,没有数据。方法字段为POST,此处放置的就是要提交的数据。
HTTP响应报文结构:
1.响应行:由协议版本、状态码和状态码描述三个字段组成,之间用空格隔开。
2.响应头部:
3.空行:作用就是通过一个空行告诉客户端响应头部到此为止。
4.响应数据(正文):
九、HTTP协议状态码
十、URL与URI的区别
URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。
URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。
URI 属于 URL 更高层次的抽象,一种字符串文本标准。就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。
十一、HTTP请求方法
这里仅列出HTTP1.1所支持的方法
1.GET:请求资源。请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。
2.POST:传输实体主体。(虽然用 GET 方法也可以传输实体的主体,但一般不用 GET 方法进行传输,而是用 POST 方法。虽说 POST 的功能与 GET 很相似,但POST 的主要目的并不是获取响应的主体内容。)
3.HEAD:获取报文首部。HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认URI 的有效性及资源更新的日期时间等。
4.PUT:传输文件。在请求报文的主体中包含文件内容,然后保存到请求 URI 指定的位置。(鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以上传文件 , 存在安全性问题,因此一般的 Web 网站不使用该方法。)
5.DELETE:删除文件。DELETE 方法用来删除文件,是与 PUT 相反的方法。DELETE 方法按请求 URI 删除指定的资源。(但是,HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机制,所以一般的 Web 网站也不使用 DELETE 方法。)
6.OPTIONS:询问支持的方法。OPTIONS 方法用来查询针对请求 URI 指定的资源支持的方法。
(7和8比较难理解)
7.TRACE:追踪路径。TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。(客户端通过 TRACE 方法可以查询发送出去的请求是怎样被加工修改/ 篡改的。这是因为,请求想要连接到源目标服务器可能会通过代理中转,TRACE 方法就是用来确认连接过程中发生的一系列操作。)
8.CONNECT:要求用隧道协议连接代理。
十二、GET方法与POST方法的区别
1.GET方法参数通过URL传递,而post方法参数放在请求体中。
2.GET方法在URL中传递的参数是有限制的(原则上url 长度无限制,但大多数浏览器通常都会限制url 长度在2k(2048字节byte))),而POST方法理论上没有(实际上IIS4中最大量为80k,IIS5中为100k)。
3.正是因为参数暴露在URL上,GET方法比POST方法更不安全,因此不能用来传输敏感信息。
4.GET方法参数会被完整地保留在浏览器历史记录中,而POST方法不会。
5.GET只接受ASCII 码字符,而POST没有限制。
6.GET请求只能进行url 编码,而POST支持多种编码方式。
7.GET产生的URL地址可以被bookmark, POST则不可以。
8.GET请求会被浏览器主动cache,而POST不会,除非手动设置。
9.GET在浏览器回退时是无害的,而POST会再次提交请求。
10.一个重大区别:GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次)
十三、HTTP与HTTPS的区别
HTTP协议运行在TCP之上,明文传输,客户端和服务器都无法验证对方身份。HTTPS是身披SSL外壳的HTTP,运行在SSL之上,SSL运行在TCP之上,是添加了加密与认证机制的HTTP。
两者不同点:
1.端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443。
2.资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源。
3.开销:Https通信需要证书,而证书一般需要向认证机构购买。
HTTPS工作原理:
十四、对称加密与非对称加密
g持续更新!!!!!觉得如果有帮助到你,麻烦评论喜欢加关注哟。