概念明确:
1:TCP/IP代表传输控制协议/网际协议,指的是一系列协议 为什么会叫TCP/IP、因为用的多,
2:HTTP 是属于应用层的协议
3:OSI七层模型和TCP/IP 平等,只是TCP/IP协议簇被广泛使用
TCP/IP协议簇基本框架就:应用层,传输层,网络层,链路层
最直白的解释 :如下
由光纤铺起来的一条IP高速路,一辆TPC卡车 载着你买的HTTP货物,真正发送到你家去
1:为什么是HTTP货物,不是其他ftp,ssh啊之类的, 你指望一家卖五金店的卖玩具? 所以你让浏览器不用http 用其他协议?
2:为什么是TCP卡车,如果卡车装的是一箱子钱,tcp像是配备了保镖(特殊的机制保证数据安全 不会传给别人) 你会使用UDP 三轮车还没有导航来到你的村里,随便送给一家?
3:为什么是IP高速公路:你先也可以选择走别的烂泥路并且建在喜马拉雅山的烂泥路协议(当然建成了能更快登顶,这就是特殊人群,特殊用处),不拦着你
5:为什么是光纤:你也可以用 线路,无线电
所以为什么四层协议里面各种模型叫做tcp/ip 因为用的多,比其他的好用
有了如上明确的概念 于是秃头的面试官拿着你的简历,眼睛斜视着你,嘴角勾起微笑就问道: 脑海中同时想起自己曾经被这些该死的问题支配的恐惧
HTTP和HTTPS的区别
概念:
HTTP是什么:超文本 传输 协议
超文本:图片,音频,文字, 这些叫做数据
传输:就是数据需要经过一系列的物理介质从一个端系统传送到另外一个端系统的过程。通常我们把传输数据包的一方称为请求方
,把接到二进制数据包的一方称为应答方
。
版本 产生时间 内容 发展现状 HTTP/0.9 1991年 不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 没有作为正式的标准 HTTP/1.0 1996年 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 正式作为标准 HTTP/1.1 1997年 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 2015年前使用最广泛 HTTP/2 2015年 多路复用、服务器推送、头信息压缩、二进制协议等 逐渐覆盖市场 ————————————————
http2多路复用:通过单一的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享一个TCP连接,实现多留并行而不是依赖建立多个TCP连接。
所以多个同时请求的时候比Http1更快所以http/2比http1更快
Http特点
1.无状态:协议对客户端没有状态存储,所以访问一个网址需要反复进行登录操作
2.无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区 别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
3.基于请求和响应:基本的特性,由客户端发起请求,服务端响应
4.简单快速、灵活
5.信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
HTTPS特点
HTTPS是什么:《图解HTTP》这本书中曾提过HTTPS是身披SSL外壳的HTTP。
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
协议:指的就是是网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些 规则就称为协议,只不过是网络协议。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密
参考地址:https://blog.csdn.net/xiaoming100001/article/details/81109617 http和https详细对比
回答:
首先 第一点:HTTP是超文本传输协议,建立在TCP/IP的基础之上的 但是HTTP 是未经安全加密的协议 所以你的货物容易被偷
第二点:HTTPS比HTTP更安全,因为多了一层 TLS/SSL协议
第三点:https在地址栏是一https://开头,http是以:http开头
第四点:HTTP 的默认端口是 80,而 HTTPS 的默认端口是 443。
当你回答这些之后,面试官泛起一些波澜,这小子有货!
于是
2请问 HTTP 里面的GET和POST的区别
get:1:请求服务器返回资源,2:不安全因为请求参数会凭借在url后面,容易窃听篡改:3:长度有限制:4:会被浏览器cache缓存
post:1:数据提交2:长度没限制
在回答完之后,突然面试官插了一嘴,为什么get是不安全的,post和get谁更安全
错误回答:啊呀肯定post更安全啊,因为get传输方式是在url显示啊,容易被截获啊
正确回答:你错了,面试官,当你问起这个问题之后,你就没考虑到HTTP协议的存在,来我给你上一课
首先: HTTP协议中提到GET是安全的方法(safe method) 其意思是说GET方法不会改变服务器端数据,所以不会产生副作用。
如果是该用POST的地方用了GET,又说GET不安全,那GET也太冤枉了。
也就是说,只要我们正确选择使用GET和POST,那么GET是安全的。
当然以上回答之针对于get和post谁更安全这个话题
3:请问什么是无状态协议,HTTP属于无状态协议吗,怎么解决无状态协议
1:无状态协议是:浏览器对于个人操作是没有记忆能力的,像我们登录网站,下次自动记住密码是Cookie的作用
2:HTTP不属于无状态协议啊
3:怎么解决:使用Cookie,
4:请问你在地址栏输入www.****.com发送了什么 https://www.jianshu.com/p/7e92fce09326
- 1:浏览器地址栏输入url
- 2:浏览器会先查看浏览器缓存系统缓存路由缓存, 如有存在缓存, 就直接显示。 如果没有, 接着第3步
- 3:域名解析(DNS)获取相应的 IP
- 4:浏览器向服务器发起 tcp 连接, 与浏览器建立 tcp 三次握手
- 5:握手成功, 浏览器向服务器发送 http 请求, 请求数据包(请求行,请求报头和请求正文。)
- 6:服务器请求数据, 将数据返回到浏览器
- 7:浏览器接收响应, 读取页面内容, 解析 html 源码, 生成 Dom 树
- 8:解析 css 样式、 浏览器渲染, js交互
5:既然你说到浏览器与服务器建立TCP链接,那么 什么是TCP三次握手和四次挥手
TCP三次握手是建立链接:
第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;
第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
通俗;
小明 - 客户端 小红 - 服务端
- 小明给小红打电话,接通了后,小明说喂,能听到吗,这就相当于是连接建立。
- 小红给小明回应,能听到,你能听到我说的话吗,这就相当于是请求响应。
- 小明听到小红的回应后,好的,这相当于是连接确认。在这之后小明和小红就可以通话/交换信息了。
图解:
以上内容借鉴地址:
面试HTTP:https://www.cnblogs.com/cxuanBlog/p/12735623.html
TCP/IP的区别:https://www.cnblogs.com/xianlei/p/tcpip_http.html
深入浅出TCP/IP协议:https://www.cnblogs.com/onepixel/p/7092302.html