最近,在面试第一轮抖音(字节跳动)的伦敦职位(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 四层模型
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)?
面试经历
- 写了十几年代码, 谷歌/Google认为我还不够Senior
- Jane Street第一轮一小时面试体验卡(伦敦软件工程师)
- Meta/Facebook四次面试经历
- 三次冲击谷歌软件工程师: 我的面试起伏录 (谷歌面试是不是一生只有三次机会?)
- 记两次伦敦抖音面试经历(Tiktok)
- 我的面试谷哥GOOGLE伦敦SRE的经验和教训
- 记Facebook的第一轮技术面试(伦敦脸书)
- 记微软Principal SE的第一轮面试
- 我的AMAZON面试经历与经验之谈(亚麻伦敦面经)
- 离伦敦脸书最近的一次 - 记FACEBOOK伦敦终面经历
面试题
- 软件工程师面试: TCP/IP协议是什么?
- 软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么?
- 谷歌面试题: 迷宫随机生成算法
- 软件工程师数据库面试技巧之 SQL中的第二名记录
- 软件工程师面试技巧之 动态规化 - 整数拆分
- 软件工程师面试技巧之 如何检查数独的有效性
- 去年 Google 的面试题 - 打印消息
- 软件工程师面试技巧之 使用哈希表降复杂度
- 微软面试题: 三角形的面积是多少?
- 英国 IT公司 电话面试的一些技巧 (程序员)
- C/C++ 中的内存管理器(堆与栈)
- C++的 map 当键(Key)不存在的时候会发生什么?
- 随机数独游戏的算法设计 (Sudoku)
- 经典二叉树的镜像的递归算法
- 谷歌的扔鸡蛋问题
- 面经: Python 的 List 和 Dictionary 有啥区别?
- 逻辑测试系列 - 一种只有4种语句的编程语言 - (1)
- 逻辑测试系列之二 - DECR
- 逻辑测试系列之三 - SUBT
面试技巧
面试其它
- 产品设计和系统设计面的区别(Product Design vs System Design)
- 45 分钟模拟面试(编程、系统设计)+职业发展建议
- 英国和美国IT公司面试的主要区别
- 拒了甲骨文(Oracle)的 Offer
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK