1. 用浏览器打开一个网站,会使用到TCP/IP协议族中的哪些协议?


以下文段摘自:知乎_TOAA的回答

假设你用一个全新的浏览器(第一次启动的那种),访问百度(http://www.baidu.com/),在你敲入网址并按下回车之后,将会发生以下神奇的事情:

浏览器先尝试从Host文件中获取http://www.baidu.com/对应的IP地址,如果能取到当然万事大吉大家都能嗨,如果不能,就使用DNS协议来获取IP咯。

在DNS协议中,PC会向你的本地DNS服务器求助(一般是路由器),希望从本地DNS服务器那里得到百度的IP,得到就好,得不到还得向更高层次的DNS服务器求助,最终总能得到百度的IP。

得到百度的IP,下一步是使用TCP协议,建立TCP连接。

在TCP协议中,建立TCP需要与百度服务器握手三次,你先告诉服务器你要给服务器发东西(SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),然后你应答服务器(ACK),总共来回了3次,称为3次握手。

不过,建立TCP连接有个前提(或者说给服务器发消息有个前提):你必须能成功地把消息发到服务器上。虽然已经知道IP,但并无啥用(比如说,你在广东,你知道北京的地理坐标经纬度就能到北京了?你得知道有哪些路通往北京吧你得准备盘缠吧你得花时间吧)。

为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议。

我们都知道,你的PC和百度服务器之间一般会有许多路由器之类的东西,IP协议指定了出发地(你的PC)和目的地(服务器);你的数据会经过一个又一个路由器,OSPF决定了会经过那些路由器(用一种叫路由算法的玩意,找出最佳路径);从一个路由器怎么传给下一个路由器?这是ARP协议的JOB,ARP负责求下一个节点的地址(我们不止是要目的地,还要中间节点的地址)。
IP协议使用的是IP地址,整个发送过程中只涉及出发地和目的地2个IP地址,而ARP协议使用的是MAC地址,整个发送过程中涉及到每一个节点的MAP地址

现在,我们能和服务器通信,还建立了TCP连接,下一步干嘛,当然是用HTTP协议请求网页内容咯。

你发个HTTP请求报文给服务器,如果服务器禁止你访问它就给你回个"Forbidden",如果它暂时挂掉了就给你回个“内部服务错误”,如果它正常才给你回个“OK“并将你要的数据传给你;如果你还需要其它的东西再去跟它要(它一般还会给你的-_-)。

你收到了服务器的回复,是一坨HTML形式的文本。浏览器必须要能够理解文本的内容,并快速地渲染到屏幕上(浏览器一般用有限自动机来理解文本内容,渲染的话就各看本事了,之所以微软IE卡成狗而谷歌浏览器很6,就是它们的渲染速度不同...)

渲染出来后,你就看到百度的首页了


下面就简单介绍一下TCP/IP协议族都包含哪些协议,其中在打开一个网站时,会用到的协议将用蓝色字体标注:

  • 应用层:

    • HTTP(超文本传输协议):所有的WWW文件都必须遵守这个标准。
    • SMTP(电子邮件传输协议):保证可靠且有效的电子邮件传输。
    • TELNET:远程登录服务应用。
  • 传输层:
    • TCP(传输控制协议):负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
    • UDP(用户数据包协议):DNS使用UDP传输。无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。
  • 网络层:
    • IP:给因特网的每一台联网设备规定一个地址。
    • ICMP:提供网络传输中的差错检测。
    • ARP:将本机的默认网关IP地址映射成MAC物理地址。
  • 数据链路层:
    • RARP:反向地址转换协议。允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。

总的来说,打开一个网站时,会用到TCP/IP协议族的HTTP、TCP、IP、ARP协议,其次还会用到TCP/IP协议族之外的协议,如域名解析时用到的DNS协议、将消息从你的PC上传到服务器上还需要用到的OSPF协议。

2. 根据域名或者IP识别Internet上的主机都用到了哪些协议?

先讲一下MAC地址和IP的的区别吧:引用的知乎某位大佬的解释

虽然数据包发送时包含了完整的TCP/IP四层信息,但是IP地址只在的网络间寻址才起到作用,例如:一个路由器两端连接的是两个不同的网络,路由器接收到数据包后,查看数据包的IP字段和路由器的路由表,寻找到达目的IP所需要通过的端口,这个时候才需要IP地址。在同一个网络内,IP地址在发送端被转化为MAC地址进行寻址,而这种转化和交换的对应关系,依赖于ARP协议和MAC地址表。

总结:同一个网络内(IP在同一网段)的数据交换,都是MAC地址负责寻址;IP地址只在负责连接两个不同网段的路由器上才发挥指导作用。

首先,IP协议告诉了我们出发地和目的地;在同一个网络内进行数据交换时,IP地址会被转化为了MAC地址,借助的是ARP协议;经历哪些路由器由OSPF协议告诉我们;如何传递给下一个路由器,借助的也是ARP协议。

3. TCP协议的主要功能都有哪些?

  • 完成对数据报的确认、流量控制和网络拥塞;
  • 自动检测数据报,并提供错误重发的功能;
  • 将多条路径传送的数据报按照原来的顺序进行排列;
  • 控制超时重发,自动调整超时值。

前端笔试题总结(六) - 计算机网络篇相关推荐

  1. 前端笔试题面试题记录(上)

    前言 过完元宵,就到上海找了波工作,现在已经入职好了,蹭波热点,写一波面试记录,内容包含笔试题和面试题,还有一些没有写进来,准备再开一篇,许久没写了,写的确实有些慢.如果喜欢的话可以点波赞,或者关注一 ...

  2. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  3. 前端笔试题面试题记录(下)

    前言 接上篇前端笔试题面试题记录(上).趁清明小长假,把上篇剩下的部分也写一下,因为最近比较忙这篇已经拖了很久了.现在刚刚开始银四了,应该还是有些小伙伴在找工作,时间还不算太晚,希望本篇可以帮到这些小 ...

  4. 小红书2020校招前端笔试题卷三

    小红书2020校招前端笔试题卷三题目地址 第一题 第一题我做错了以为是选错误的 第二题 第三题 解: JS中的执行机制(setTimeout.setInterval.promise.宏任务.微任务), ...

  5. 前端笔试题小结(一)

    前端笔试题小结(一) 2020-03-13 题目一: 将一个js数组去重. 样例: 输入:[ 1, "apple", 3, "a", 3, 1, 5, 6, & ...

  6. 前端笔试题【1】--从字符串的第二个字符开始对数组进行排序

    前一段时间做过一个阿里的前端笔试题:从字符串的第二个字符开始对数组进行排序.当时没想到简单的方法,这几天看书才发现sort()还可以自定义一个比较函数,郁闷啊啊啊~~ 看来基础还是不够扎实啊, 赶紧记 ...

  7. 2017网易前端笔试题总结

    整理了一下2017网易前端笔试题,附上了自己的答案,仅供参考,欢迎讨论和交流.如果有什么不对的地方,欢迎指正. 题目整理(不含答案) 网盘分享: 链接: https://pan.baidu.com/s ...

  8. html5 笔试题 选择题,2019拼多多前端笔试题

    选择.填空题: 1.IP地址,子网掩码的计算 2.Internet网络层重要协议 3.http请求方法 4.HTML中a标签的伪类 5.alert(undefined==null)的输出结果 6.ht ...

  9. 美团2023年春招在线前端笔试题回忆版

    提示:题目不一定完全正确,只能说给大家参考会考察哪些知识点. 文章目录 前言 一.单选(计算机基础知识) 二.专项选择 三.编程题 1. 某地有一个火车站如下图所示,小红很好奇火车是怎么驶进驶出的,然 ...

  10. 荔枝FM的前端笔试题

    前言:正所谓金三银四,我也在三月份面了一次荔枝FM,初试是做一套比较简单的笔试题,发出来跟大家简单探讨一下,面试时的一些问题主要是通过这些笔试题进行拓展,例如flex布局.改变正则条件,promise ...

最新文章

  1. re:Invent大会第四天:为什么Lambda值得你更多关注?
  2. Vieri离开国际米兰
  3. python类型-Python基本内置数据类型有哪些?
  4. boost::mpl模块实现front相关的测试程序
  5. 理解DDoS防护本质:基于资源较量和规则过滤的智能化系统
  6. 类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换
  7. 【Java】基数排序
  8. Selenium操作页面元素
  9. 9-2 go语言的调度器
  10. MySQL基础命令中文解析
  11. 如何将根文件系统制作成yaffs格式,并设置从yaffs启动
  12. java 随机生成中文姓名 工具类
  13. 深度优先,Kruskal,Prim几种方式生成迷宫地图
  14. MySQL数据库系统基础_wuli大世界_新浪博客
  15. 3个小时学会wordpress模板制作
  16. 2022年第十二届APMCM亚太地区数学建模竞赛1月加赛E题翻译以及思路
  17. HTML5系列代码:注册商标reg_和版权商标copy
  18. 生产者消费者模型(C++)
  19. Ubuntu下bazel卸载与安装
  20. 与计算机内存容量密切相关的,与计算机内存容量密切相关的是( )。

热门文章

  1. 网络爬虫——Jsoup
  2. 企业管理系统从五个方面改变传统办公
  3. matlab 实现电话拨号
  4. 在html css中加粗显示,在CSS里面如何实现字体加粗
  5. e时代英语新手入门教程
  6. 5关于Linux知识杂物箱
  7. 【LeetCode刷题】374. 猜数字大小
  8. filewriter追加_在filewriter中追加“true”时,项将从列表中删除
  9. 云服务器抢票咋用_可以利用云服务器来抢票吗?
  10. pet材料——百度百科