点击蓝字 「前端小苑」关注我

来来来

对,我就是骗你进来的。嘿嘿嘿... 既然来了就看看再走嘛~

作为一个学通信出身的前端,说道http、tcp什么的,算是到了我的领域了。(我会告诉你我上课净睡觉了,啥也没学到吗?)这次给大家讲讲http,提高水平、丰富知识。(要不是为了面试,谁会管什么ttp呀,对我是就这么肤浅)

TCP

要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。

TCP/IP 协议分层模型

  • 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换

  • 链路层代表驱动

  • 网络层

    • 使用 IP 协议,IP 协议基于 IP 转发分包数据

    • IP 协议是个不可靠协议,不会重发

    • IP 协议发送失败会使用ICMP 协议通知失败

    • ARP 解析 IP 中的 MAC 地址,MAC 地址由网卡出厂提供

    • IP 还隐含链路层的功能,不管双方底层的链路层是啥,都能通信

  • 传输层

    • TCP 协议面向有连接,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少7次的发包收包,资源浪费

    • UDP 面向无连接,不管对方有没有收到,如果要得到通知,需要通过应用层

    • 通用的 TCP 和 UDP 协议

  • 会话层以上分层

    • TCP/IP 分层中,会话层,表示层,应用层集中在一起

    • 网络管理通过 SNMP 协议

划重点了啊(面试最常问的啊)

TCP三次握手和四次挥手?

被问烂了的问题了,这里不详细讲了,三次握手:

  • 客户端–发送带有SYN标志的数据包–一次握手–服务端

  • 服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端

  • 客户端–发送带有带有ACK标志的数据包–三次握手–服务端

四次挥手:

  • 客户端-发送一个FIN,用来关闭客户端到服务器的数据传送

  • 服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号

  • 服务器-关闭与客户端的连接,发送一个FIN给客户端

  • 客户端-发回ACK报文确认,并将确认序号设置为收到序号加1

还不懂的童鞋,去找别人的文章好好看看!

TCP和UDP的区别?

仔细阅读上面传输层里写的内容,懂了吗?(不懂?不懂背下来啊,混蛋!)

我们微信聊天时候经常会有这种情况。

是不是感同身受,这种情况就是对方用了TCP协议来聊天,要经过--在吗?--在--巴拉巴拉,才能成功的传递信息。而如果对方使用UDP,则会有事直接说,不管我收没收到。(以后找我请用UDP协议,着急直接打电话!)

HTTP

Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。

所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

http传输流

无耻盗图

发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部

又来划重点了啊

HTTP的英文全称?

开玩笑的,这个显然不是重点,但是不排除有人会去问,还是要知道的:超文本传输协议(HyperText Transfer Protocol)

状态码?

状态码就那些,常用的记住就行了:

2XX 成功

  • 200 OK,表示从客户端发来的请求在服务器端被正确处理

  • 204 No content,表示请求成功,但响应报文不含实体的主体部分

  • 206 Partial Content,进行范围请求

3XX 重定向

  • 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL

  • 302 found,临时性重定向,表示资源临时被分配了新的 URL

  • 303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源

  • 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况

  • 307 temporary redirect,临时重定向,和302含义相同

4XX 客户端错误

  • 400 bad request,请求报文存在语法错误

  • 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息

  • 403 forbidden,表示对请求资源的访问被服务器拒绝

  • 404 not found,表示在服务器上没有找到请求的资源

5XX 服务器错误

  • 500 internal sever error,表示服务器端在执行请求时发生了错误

  • 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求

HTTP协议格式?

HTTP的请求和响应的消息协议是一样的,分为三个部分,起始行、消息头和消息体。这三个部分以CRLF作为分隔符。最后一个消息头有两个CRLF,用来表示消息头部的结束。

HTTP请求的起始行称为请求行,形如GET /index.html HTTP/1.1

HTTP响应的起始行称为状态行,形如200 ok

消息头部有很多键值对组成,多个键值对之间使用CRLF作为分隔符,也可以完全没有键值对。形如Content-Encoding: gzip 消息体是一个字符串,字符串的长度是由消息头部的Content-Length键指定的。如果没有Content-Length字段说明没有消息体,譬如GET请求就是没有消息体的,POST请求的消息体一般用来放置表单数据。GET请求的响应返回的页面内容也是放在消息体里面的。我们平时调用API返回的JSON内容都是放在消息体里面的。

HTTP的无状态性?

所谓HTTP协议的无状态性是指服务器的协议层无需为不同的请求之间建立任何相关关系,它特指的是协议层的无状态性。但是这并不代表建立在HTTP协议之上的应用程序就无法维持状态。应用层可以通过会话Session来跟踪用户请求之间的相关性,服务器会为每个会话对象绑定一个唯一的会话ID,浏览器可以将会话ID记录在本地缓存LocalStorage或者Cookie,在后续的请求都带上这个会话ID,服务器就可以为每个请求找到相应的会话状态。

输入url到页面加载都发生了什么事情?(最最常问的来了)

  • 输入地址

  • 浏览器查找域名的 IP 地址 这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...

  • 浏览器向 web 服务器发送一个 HTTP 请求

  • 服务器的永久重定向响应(从 http://example.com 到 http://www.example.com)

  • 浏览器跟踪重定向地址

  • 服务器处理请求

  • 服务器返回一个 HTTP 响应

  • 浏览器显示 HTML

  • 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)

  • 浏览器发送异步请求

还是要注重一下版权的,本文部分内容来源于大佬码洞


关于本文

作者:白伟业

来源:掘金

原文链接:https://juejin.im/post/5ad4094e6fb9a028d7011069

版权声明:版权归作者所有


更多文章请点击“阅读原文”

喜欢本文点个“在看”哟!

小哥哥,小姐姐,我有一份tcp、http面试指南你要吗?相关推荐

  1. 小哥哥小姐姐,来尝尝 Async 函数这块语法糖

    编者注:众所周知,JS 最大的特性就是异步,异步提高了性能但是却给我们编写带来了一定困难,造就了令人发指的回调地狱.为了解决这个问题,一个又一个的解决方案被提出来.今天我们请来了 <JavaSc ...

  2. 最高薪18.8K!披荆斩棘的小哥哥小姐姐,正式C位“出道”啦!

    如果你要问最近有什么宝藏热门综艺,那或许非<披荆斩棘的哥哥>莫属.对标此前<乘风破浪的姐姐>,"哥哥团"千呼万唤始出来,展现出与"姐姐团" ...

  3. 有了这份程序员面试指南,你离大厂 Offer 还远吗?| 附推荐书籍

    作者 | 码农唐磊 来源 | 程序猿石头 在这篇文章<面试 Google, 我失败了 | Google 面经分享>中,石头分享了 Google 中国的面试流程和体验,并分享了 HR 小姐姐 ...

  4. 有了这份程序员面试指南,你离大厂Offer还远吗?| 附推荐书籍

    本篇文章,我将结合英文版的 Google 面试指南的主线,根据自己的理解对文章进行修改,然后结合自己面试国内大厂的经验给大家阐述.其实我觉得,各大公司针对程序员岗位的面试流程来讲是相对比较通用的,只是 ...

  5. 转载一份大佬的面试指南,命中率很高

    说在最前面的话 这是一个份转载的面试锦囊,好的东西要分享,嘿嘿嘿 为了防止大佬删除自己没得地方看了,所以就转载了,大佬说过有些地方可能有些不妥,大家自行参照,哪怕不面试,当作知识积累也好啊,啊哈哈哈哈 ...

  6. 初来乍到,可能有些潦草。希望各位小哥哥小姐姐指点一二

    学习mybatis框架的第一天 MyBatist概述 搭建MyBatist开发环境 MyBatist概述 mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注s ...

  7. 回答面试官:我“腿特长”!阿里云小哥哥小姐姐咋看( 0 x 0 )?

    简介:面对特长这个问题,其实有很多小伙伴是很迷茫的.不知道如何准备或如何回答或展示,甚至不知道自己有什么特长怎么办? 秋天已过去一周多了,很多互联网的秋招已在火热进行中了.大家简历.面试准备咋样了呢? ...

  8. 游戏里的小哥哥小姐姐都是怎么来的?

    什么是3D建模? 3D:是3DS max的简称,3DS max是全世界最知名的三维动画制作软件,他在三维建模,动画,渲染方面近乎完美的表现,完全可以满足读者对制作高品质效果图,动画及游戏等作品的要求. ...

  9. 手机微信表白弹窗,用微信就能撩到小姐姐小哥哥!!!

    最近表白弹窗的撩妹方法在抖音非常火爆,随便录制一条都分分钟上百万点赞. ▼ 小编之前也给大家介绍过制作方法,点击回顾[抖音点赞200w+的"表白"弹窗,超强技能来袭!] ▼ 但之前 ...

最新文章

  1. 【转帖】如何通过 javascript 访问 GridView/DataGrid 选中 CheckBox 行各列的值
  2. ES6 一些常用使用
  3. 几种location.href的区别 js实现网页防止被iframe框架嵌套功能 .
  4. python根据文件路径获取上级目录路径
  5. 离线语法设置 科大讯飞_科大讯飞智能键盘K710评测 输入速度超级加倍
  6. post怎么用php,$_POST[''];怎么用
  7. NumPy中特别的数组函数 By Youki~
  8. hibernate配置文件hibernate.cfg.xml的详细解释
  9. Eclipse上索爱手机开发平台的配置
  10. Axure RP 9基础教程(3)——添加图标元件
  11. 中医测试体质的软件,中医体质辨识软件五大功能
  12. ALOHA协议和CSMA协议
  13. 双目视觉(1)---立体匹配介绍
  14. 完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器[zz]
  15. linux命令 - tail:查看文件最后几行的命令
  16. [高数][高昆轮][高等数学上][第一章-函数与极限]08.函数的连续性与间断点
  17. ibm x服务器硬盘检测,IBM System x 服务器自带RAID1的故障恢复
  18. 深入理解面向对象,面向对象3个特性7个原则6种关系
  19. android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
  20. ccf-星际旅行(80分)

热门文章

  1. burpsuit 靶场(Directory traversal)
  2. python生成一个20万数据_用Python分析了20万场吃鸡数据,有不少有趣的发现
  3. Android 与 Chrome OS 中针对大屏幕设备的更新
  4. 使用Convert命令进行显示转换
  5. sw标准件不能配置_sw标准件库调不出来(在使用solidworks2009标准件库 调不出零件)...
  6. 梁凯恩,下一个奇迹——八个关键创造奇迹
  7. gc2000导出丝印和坐标_GC坐标的导出与引入
  8. No.054<软考>《(高项)备考大全》【冲刺8】《软考之 119个工具 (6)》
  9. 【springboot错误】 Failed to instantiate [org.springframework.transaction.interceptor.BeanFactoryTransac
  10. 第一个 Python 程序(2)