普通视图

发现新文章,点击刷新页面。
昨天以前首页

软件工程师面试: TCP/IP协议是什么?


最近,在面试第一轮抖音(字节跳动)的伦敦职位(Site Reliability Engineer),被问到了这个问题:TCP/IP协议是什么?这个是考基本功,是每个软件工程师都要会的。

TCP/IP(传输控制协议/互联网协议)是一组网络协议,管理数据如何通过互联网和其他网络传输。它是互联网的基本通信模型,由两个主要层组成:

互联网协议 (IP)

IP 负责将数据包从源地址路由到目标地址。它工作在 OSI 模型的网络层。

  • IP 地址:互联网中的每个设备都被分配了一个唯一的 IP 地址,用于标识数据包的发送者和接收者。
  • 数据包路由:IP 将数据分成多个包,并通过不同的网络将其路由到目标地址。
  • 版本:IP 主要有两个版本:IPv4(32位地址)和 IPv6(128位地址)。

传输控制协议 (TCP)

TCP 负责确保设备之间数据传输的可靠性。它工作在 OSI 模型的传输层。

  • 面向连接:TCP 在传输数据之前会在发送方和接收方之间建立连接。
  • 数据完整性:TCP 通过确认、序列号和错误检查等机制,确保数据包按顺序无误地到达。
  • 流量控制:TCP 通过滑动窗口管理数据流,防止接收方超载。

TCP/IP 协同工作原理

  • 应用数据:应用层将数据(例如网页、电子邮件)发送到传输层(TCP)。
  • TCP 层:TCP 将数据分段,添加序列号和错误检查信息,并将其发送到 IP 层。
  • IP 层:IP 层将 TCP 段封装成 IP 包,附上源和目标 IP 地址,并通过各种网络路由数据包。
  • 接收端:在目标设备上,IP 层将数据包交给 TCP,TCP 重新排列并验证数据的完整性,然后将其传递给应用层。

TCP/IP 套件中的其他协议

  • UDP(用户数据报协议):一种无连接、速度更快的 TCP 替代方案,常用于视频流、在线游戏等实时通信。
  • HTTP/HTTPS(超文本传输协议):用于网络通信的应用层协议。
  • DNS(域名系统):将域名解析为 IP 地址。

TCP/IP 确保数据在网络间高效传输,保持可靠性、地址分配和路由,同时遵循互联网的基本通信原则。

TCP/IP 通常被描述为一个四层模型,但有时它可以与 OSI 模型(七层)进行比较。

tcp-ip-and-osi-model 软件工程师面试: TCP/IP协议是什么? 学习笔记 程序员 计算机 计算机 软件工程 面试

TCP/IP 4层协议和OSI的7层协议的比较

TCP/IP 四层模型

TCP/IP 模型简化为四层,旨在反映协议在现实网络中的工作方式。

应用层

这一层对应于 OSI 模型的前三层(应用层、表示层和会话层)。它包括 HTTP、HTTPS、FTP、DNS 和 SMTP 等协议。

传输层

负责设备之间的可靠通信。运行于这一层的协议包括 TCP(传输控制协议)和 UDP(用户数据报协议)。

互联网层

处理跨网络的数据包路由,类似于 OSI 的网络层。该层包含 IP(互联网协议),用于地址分配和数据包路由。

网络接口层(或链路层)

这一层负责物理网络(如以太网、Wi-Fi)和互联网层之间的数据传输。它对应于 OSI 的数据链路层和物理层。

OSI 七层模型

OSI(开放系统互联)模型更加细致,将网络功能分为七个层次。

  • 物理层(如电缆、交换机)
  • 数据链路层(如 MAC 地址、以太网)
  • 网络层(如 IP 路由)
  • 传输层(如 TCP、UDP)
  • 会话层(如管理应用之间的会话)
  • 表示层(如加密、数据格式转换)
  • 应用层(如 HTTP、FTP)

主要区别:TCP/IP vs OSI

TCP/IP 将一些功能合并为更少的层次(四层),反映了它在互联网通信中的实际应用。

OSI 是一个更加详细的概念模型(七层),主要用于教学和理论理解。

总结来说,TCP/IP 通常被认为是四层模型,而 OSI 模型则是七层模型。

英文:What is TCP/IP (4 Layer vs OSI 7 Layer)?

面试经历

面试题

面试技巧

面试其它

本文一共 1009 个汉字, 你数一下对不对.
软件工程师面试: TCP/IP协议是什么?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师面试: TCP/IP协议是什么? 学习笔记 程序员 计算机 计算机 软件工程 面试
The post 软件工程师面试: TCP/IP协议是什么? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 孩子喜欢的 cozmo 机器人 小儿子今年刚过5岁生日, 问他要啥生日礼物, 他说想要 cozmo 机器人. 我们都不知道这是啥, AMAZON一搜还不便宜, 均价200多到300多英镑都有. 估计是孩子在学校的时候知道的这机器人. 在AMAZON下了单, 很快就到了. 图像识别算法很厉害. 这机器人很厉害, 不需要告诉它, 它可以自己玩,...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 这些年在英国开过的车 这个车是真的汽车,从2010/2011年开始学驾照,到2012年考过驾照(两次才过),到现在也有十几年的驾龄了,真的算老司机了。 现在开的是两辆车(第四和第五),分别是奥迪Q5和保时捷卡宴。目前每周加保时捷的油费大概是50英镑。 第一辆 Seat Ibiza 第一辆:在英国的第一辆小黄车 Seat Ibiza (西亚特·伊比飒) 离合很重,男人开的车,当时用来练手,最后面到谢菲而得/Sheffield因为住在市中心不太需要车,就给卖了。 第二辆 奥迪AUDI A6 这辆开了有近十年,当时从谢菲搬家到剑桥Cambourne大剑宝就是开得这车。开了近10年的奥迪A6卖给了车厂(内含开车成本) 我当时买的时候是7000左右,然后买来修了修又多花了1000多英镑,...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. Win10右键添加管理员权限.reg 保存以下为 *.reg 文件 双击 Windows Registry Editor Version 5.00 @="获取管理员权限" "NoWorkingDirectory"="" @="cmd.exe /c takeown /f...
  7. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
  8. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...

软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么?


我认为这无疑是最受欢迎的软件工程师的(Software Engineer) 面试问题 之一。最近有人说这个问题曾出现在 抖音Tiktok 的面试中。

要回答面试中的“当你在浏览器中输入 https://www.google.com 时会发生什么?”这个问题,可以按步骤详细说明整个过程,涉及 DNS 查找、TCP/SSL 握手、请求处理和页面渲染。以下是全面的解释:

URL 解析

当你输入 URL https://www.google.com 并按下回车时:

  • 协议:浏览器识别出协议是 https,意味着它将使用 HTTP 加密传输(TLS)。
  • 主机:浏览器识别出 www.google.com 是域名。
  • 路径:默认路径是 /,因为没有提供具体路径,表示请求主页。

DNS 查找

浏览器需要将域名 www.google.com 转换为一个 IP 地址。这个过程分为几个步骤:

  • 浏览器缓存:浏览器 首先检查自己的缓存,看看是否已有 www.google.com 的 IP 地址。
  • 操作系统缓存:如果未找到,浏览器会向操作系统请求缓存。
  • 路由器缓存:如果操作系统没有该 IP,路由器会检查它的缓存。
  • ISP DNS 服务器:如果依然未找到,路由器会查询 ISP 的 DNS 服务器。
  • 递归 DNS 查找:如果 ISP 没有缓存 IP,DNS 服务器会递归查询 DNS 层次结构(根 DNS 服务器、顶级域名服务器、权威 DNS 服务器)。最终,www.google.com 的 IP 地址被解析出来(例如,142.250.72.196)。

建立 TCP 连接

知道 IP 地址后,浏览器需要与 Google 服务器建立连接,使用以下步骤:

TCP 三次握手:

  • SYN:客户端(浏览器)向服务器发送 SYN(同步)包,启动连接。
  • SYN-ACK:服务器响应 SYN-ACK(同步确认)包。
  • ACK:客户端发送 ACK 包,连接建立。

SSL/TLS 握手(针对 HTTPS)

由于使用的是 HTTPS,浏览器与服务器通过 SSL/TLS 建立加密连接:

  • 浏览器与服务器协商加密协议(TLS 版本)并交换加密密钥。
  • 服务器发送其 SSL 证书,浏览器验证该证书以确保服务器身份。
  • 生成会话密钥,用于加密接下来的通信。

HTTP 请求

建立安全连接后,浏览器向服务器发送 HTTP GET 请求:

  • 方法:GET
  • 请求头:包括浏览器类型、cookies 和缓存信息。
  • 主机:www.google.com
  • 路径:/

服务器处理

Google 的服务器位于 负载均衡器 后面,接收请求:

请求可能会通过多个反向代理和负载均衡器处理,通常分布在多个数据中心,以确保可用性和性能

Google 的 Web 服务器处理请求,检查所请求的资源(Google 的主页),并准备响应。

HTTP 响应

服务器返回一个 HTTP 200 OK 响应,并将必要的 HTML、CSS、JavaScript 和其他资源发送到浏览器。

响应包括响应头(如 Content-Type、Cache-Control)以及响应体(Google 主页的 HTML 内容)。

浏览器渲染

浏览器现在获取了 HTML 并开始渲染页面:

  • HTML 解析:浏览器解析 HTML 以构建 DOM(文档对象模型)。
  • CSS 解析:下载并应用任何链接或嵌入的 CSS 样式表以设置 DOM 元素的样式。
  • JavaScript 执行:下载并执行 JavaScript。JavaScript 可能进一步修改 DOM 或发送额外的网络请求(如 AJAX)以动态更新页面。
  • 渲染:浏览器的渲染引擎将解析和样式化的内容绘制到屏幕上,形成可见的网页。

附加资源请求

当浏览器解析 HTML 时,它会识别出额外的资源(图片、样式表、JavaScript 文件)需要加载:

这些资源通过额外的 HTTP/HTTPS 请求获取。这个过程会通过多个并行连接重复进行,以 快速下载和渲染资源。

浏览器缓存与优化

浏览器会根据缓存头(如 Cache-Control、ETag)缓存某些资源(图片、脚本、样式表)。

现代浏览器使用诸如 HTTP/2 多路复用等优化技术,通过单个 TCP 连接下载多个资源,从而减少延迟。

最终页面显示

一旦所有资源下载、解析和渲染完成,用户可以与完全加载的页面进行交互。进一步的用户操作(点击、输入等)可能会触发更多的网络请求(如提交表单、AJAX 更新)。

加分点

  • CDN(内容分发网络):Google 使用 CDN 从地理位置较近的服务器提供内容,减少延迟并提高加载速度。
  • 安全功能:HSTS(HTTP 严格传输安全)确保所有请求都通过 HTTPS 进行。Google 的证书绑定技术确保服务器的 SSL 证书未被篡改。
  • Service Workers:如果启用,Service Worker 可能会拦截请求,提供缓存响应或启用离线功能。

这份详细的说明涵盖了从用户输入 URL 到浏览器最终渲染页面的所有关键步骤,涉及 DNS、TCP/IP、TLS、HTTP 和浏览器渲染等内容,适合系统设计或软件工程面试。

英文:Software Engineering Interview Question: What Happens When You Type Google.com in the Browser Address Bar?

面试经历

面试题

面试技巧

面试其它

本文一共 1423 个汉字, 你数一下对不对.
软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么? 学习笔记 程序员 计算机 资讯 软件工程 面试
The post 软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 软件工程师面试: TCP/IP协议是什么? 最近,在面试第一轮抖音(字节跳动)的伦敦职位(Site Reliability Engineer),被问到了这个问题:TCP/IP协议是什么?这个是考基本功,是每个软件工程师都要会的。 TCP/IP(传输控制协议/互联网协议)是一组网络协议,管理数据如何通过互联网和其他网络传输。它是互联网的基本通信模型,由两个主要层组成: 互联网协议 (IP) IP 负责将数据包从源地址路由到目标地址。它工作在 OSI 模型的网络层。 IP 地址:互联网中的每个设备都被分配了一个唯一的 IP 地址,用于标识数据包的发送者和接收者。 数据包路由:IP...
  2. Meta的Enterprise Engineer企业工程师是什么? 和软件工程师的区别 我最近收到了一封来自 Meta 招聘人员的邀请邮件,关于 Meta 伦敦的员工企业工程师职位(Staff Enterprise Engineer): Meta 的企业工程师是什么? Meta 的企业工程师专注于设计、开发和维护内部工具和系统,以帮助公司员工提高生产力和效率。与传统的软件工程师角色相比,这一角色更偏向于内部,主要专注于为企业级需求构建基础设施、应用程序和自动化解决方案。以下是该职位的职责概述: 主要职责 内部工具和基础设施开发:企业工程师构建支持 Meta 内部业务运营的工具,例如...
  3. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  4. 新的旅途 – 离别总是伤感的, 离开了一起创业的公司 2周前, 正式离开了一起创业的公司, 这公司是我博士毕业后的第一份正式工作, 待了8年多了, 离别总是伤感的. 我是9月初提的离职, 三个月 Notice Period, 最后的几周交接完工作确实没有什么压力了. 11月30号, 在公司最后一天, 公司有个习惯, 对于 Good...
  5. Minuet in C – 小步舞曲C Posted Youtube – 油管地址 孩子弹琴的时候最帅了. 我现在成了我儿子的粉丝了. Eric (Aged 6) is playing “Minuet in C” when...
  6. 上了年纪痛风脚崴了的惨痛经历(尿酸过高) 痛风是一种疼痛性关节炎, 当血液中的尿酸水平高, 导致晶体形成并积聚在关节内或关节周围, 就会发生痛风. 当人体分解一种叫做嘌呤的化学物质时, 就会产生尿酸. 嘌呤自然存在于您的身体中, 也存在于某些食物中. 尿酸通过尿液从体内排出. 上两周, 和媳妇吵架, 然后就自己一人睡, 有一天起床后脚踝就开始疼了, 然后明显比左脚肿了. 我刚开始就以为是睡觉的时候不小心姿势不对,...
  7. 优衣库 感觉像炒作 这几天 这个在北京三里屯 ‘优衣库’ 试衣间自拍的视频真的很火, 男女主角均被人肉. 不可否认 这个效果还真的不错 因为我之前根本不知道 “优衣库” 是干嘛的 很刺激 在试衣间XXOO是多么爽的事情 女主角 95后妹子 长相甜美....
  8. RMB人民币数字转大写汉字 – Javascript工具 Javascript工具RMB人民币数字转大写汉字 源码: https://justyy.com/js/atoc.js 最多只能计算15位, 小数点支持2位(毛和分). 最后一位分为0时, 需要加上’整’. 而且还需要在万亿,亿,万,元位等关键位0的位置写上’零’. 例如: 325.04 写成人民币 ‘叁佰贰拾伍元零肆分’ 人民币金额用到的中文大写汉字如下: 零~壹~贰~叁~肆~伍~陆~柒~捌~玖~拾~佰~仟~万~亿 壹佰贰拾壹万叁仟肆佰壹拾贰元整...
❌
❌