
网络协议
文章平均质量分 89
网络协议
_Rye_
左手代码右手诗
一行代码一行诗
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
结束语 | 放弃完美主义,执行力就是限时限量认真完成
我知道,很多技术人员不敢写博客、写公众号,其实都有这种“怕”的心理:我又不牛,没啥要分享的,要是误导了别人怎么办?如果你想做出一些成绩,这个心理一定要克服。其实每个人都有自己的。对于某个东西,你研究的时间不一定是最长的,但是你可能有特殊的角度、表达方式和应用场景。坚定了这个想法之后,就开始投入热火朝天的专栏写作了。一旦开始写,就发现,这个事情远没有看上去那么简单。它会花费你非常多的个人时间。但是我想挑战一下自己,我觉得,只要咬牙挺过去,自己的技术就会上升一个层次。原创 2024-01-25 15:44:23 · 391 阅读 · 0 评论 -
答疑五
一个原因是中间有路由,如果 VPC 网络是平的,但是公有云经常会有一个限制,那就是器的 IP 段是用户自己定义的,一旦出虚拟机的时候,云平台发现不是它分配的 IP,很多情况下直接就丢弃了。在时间 3 的时候,将 0 的发送停止,A 不再访问网页了,红色的线归零,A 的总速率下来了,剩余的流量按照比例分给了蓝色的和绿色的线,也即分给了 A 发邮件和 B 上网。在时间 9 的时候,将 1 的发送停止,A 不再发送邮件了,绿色的流量为零,A 的总速率也下来了,剩余的流量按照比例分给了蓝色和红色。原创 2024-01-25 15:28:27 · 952 阅读 · 0 评论 -
答疑四
同城双活最重要的是,数据如何从一个数据中心同步到另一个数据中心,并且在一个数据中心故障的时候,实现存储设备的切换,保证状态能够快速切换到另一个数据中心。然而这并不符合当前网络的真实状况,因为当前的网络带宽比较大,但是由于遍布全球,RTT 也比较长,因而基于 RTT 的窗口调整策略,不仅不公平,而且由于窗口增加慢,有时候带宽没满,数据就发送完了,因而巨大的带宽都浪费掉了。对于存储设备来讲,它是无法区分放在存储上的虚拟机,哪台是重要的,哪台是不重要的,只会完全根据块进行复制,很可能就会先复制了不重要的虚拟机。原创 2024-01-25 15:06:05 · 812 阅读 · 0 评论 -
答疑三
当然当一个网络包刚刚进来的时候,是不会指向这么一个结构的,但是这个网络包肯定属于某个连接,因而会去连接跟踪表里面去查找,之后赋值给 sk_buff 的这个成员变量。可以通过 nf_conntrack_tuple_hash 找到外面的连接跟踪记录 nf_conn,通过这个可以找到来方向的那个 nf_conntrack_tuple_hash,{源 IP:客户端 IP,源端口:客户端 port,目标 IP:服务端 IP,目标端口:服务端 port},这样就能够找到客户端的 IP 和端口,从而可以 NAT 回去。原创 2024-01-25 14:51:21 · 925 阅读 · 0 评论 -
答疑二
但是不幸的是,有的客户端协议栈的实现,如果还没有配置 IP 地址,就使用单播。对于第二种情况,一方面进行监控,对 DHCP 报文进行限速,并且异常的端口可以关闭,一方面还是 SDN 或者在云中,除了被 SDN 管控端登记过的 IP 和 MAC 地址,其他的地址是不允许出现在虚拟机和物理机出口的,也就无法模拟大量的客户端。这里 ARP 的目标地址是广播的,所以无论是否进行地址学习,都会广播,而对于某个 MAC 的访问,在没有地址学习的时候,是转发到所有的端口的,学习之后,只会转发到有这个 MAC 的端口。原创 2024-01-25 14:43:54 · 1079 阅读 · 0 评论 -
答疑一
你tcp告诉你父母应用层,现在从北京去上海可以包一个车厢了,其实底层也即高铁是不允许包车厢的,都是你多次跑火车站,自己一个一个的座位买,今天买不到一整个车厢,就换另一天,直到有一天你终于买了一整个车厢的票,然后你父母享受到了包车厢的服务。其实下层的协议知道上层协议的,因为在每一层的包头里面,都会有上一层是哪个协议的标识,所以不是一个回调函数,每一层的处理函数都会在操作系统启动的时候,注册到内核的一个数据结构里面,但是到某一层的时候,是通过判断到底是哪一层的哪一个协议,然后去找相应的处理函数去调用。原创 2024-01-25 14:42:24 · 1001 阅读 · 0 评论 -
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
网络是一门实验性很强的学科,一看觉得懂,一问就打鼓,一用就糊涂。在写专栏的过程中,我自己也深深体会到了。这个时候,常常会拿一个现实的环境,上手操作一下,抓个包看看,这样心里就会有定论。原创 2024-01-25 11:44:12 · 1231 阅读 · 0 评论 -
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
上一节,我们封装了一个长长的网络包,“大炮”准备完毕,开始发送。发送的时候可以说是重重关隘,从手机到移动网络、互联网,还要经过多个运营商才能到达数据中心,到了数据中心就进入第二个复杂的过程,从网关到 VXLAN 隧道,到负载均衡,到 Controller 层、组合服务层、基础服务层,最终才下单入库。今天,我们就来看这最后一段过程。原创 2024-01-25 11:21:17 · 945 阅读 · 0 评论 -
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
上一节我们讲到,手机 App 经过了一个复杂的过程,终于拿到了电商网站的 SLB 的 IP 地址,是不是该下单了?别忙,俗话说的好,买东西要货比三家。大部分客户在购物之前要看很多商品图片,比来比去,最后好不容易才下决心,点了下单按钮。下单按钮一按,就要开始建立连接。建立连接这个过程也挺复杂的,最终还要经过层层封装,才构建出一个完整的网络包。今天我们就来看这个过程。原创 2024-01-25 11:01:02 · 990 阅读 · 0 评论 -
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
基本的网络知识我们都讲完了,还记得最初举的那个“双十一”下单的例子吗?这一节开始,我们详细地讲解这个过程,用这个过程串起我们讲过的网络协议。把这个过程分为十个阶段,从云平台中搭建一个电商开始,到 BGP 路由广播,再到 DNS 域名解析,从客户看商品图片,到最终下单的整个过程,每一步我都会详细讲解。这节我们先来看前三个阶段。原创 2024-01-25 10:23:19 · 1026 阅读 · 0 评论 -
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
到目前为止,咱们讲了四种 RPC,分别是 ONC RPC、基于 XML 的 SOAP、基于 JSON 的 RESTful 和 Hessian2。通过学习,我们知道,二进制的传输性能好,文本类的传输性能差一些;二进制的难以跨语言,文本类的可以跨语言;要写协议文件的严谨一些,不写协议文件的灵活一些。虽然都有服务发现机制,有的可以进行服务治理,有的则没有。我们也看到了 RPC 从最初的客户端服务器模式,最终演进到微服务。对于 RPC 框架的要求越来越多了,具体有哪些要求呢?首先,传输性能很重要。原创 2024-01-25 09:36:48 · 1045 阅读 · 0 评论 -
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
前面我们讲了两个常用文本类的 RPC 协议,对于陌生人之间的沟通,用 NBA、CBA 这样的缩略语,会使得协议约定非常不方便。在讲 CDN 和 DNS 的时候,我们讲过接入层的设计,对于静态资源或者动态资源静态化的部分都可以做缓存。但是对于下单、支付等交易场景,还是需要调用 API。对于微服务的架构,API 需要一个 API 网关统一的管理。API 网关有多种实现方式,用 Nginx 或者 OpenResty 结合 Lua 脚本是常用的方式。原创 2024-01-25 08:57:19 · 921 阅读 · 0 评论 -
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
上一节我们讲了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊!你会发现,对于 SOAP 来讲,无论 XML 中调用的是什么函数,多是通过 HTTP 的 POST 方法发送的。但是咱们原来学 HTTP 的时候,我们知道 HTTP 除了 POST,还有 PUT、DELETE、GET 等方法,这些也可以代表一个个动作,而且基本满足增、删、查、改的需求,比如增是 POST,删是 DELETE,查是 GET,改是 PUT。原创 2024-01-24 21:48:36 · 1172 阅读 · 0 评论 -
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
上一节我们讲了 RPC 的经典模型和设计要点,并用最早期的 ONC RPC 为例子,详述了具体的实现。原创 2024-01-24 20:35:27 · 787 阅读 · 0 评论 -
第32讲 | RPC协议综述:远在天边,近在眼前
前面我们讲了容器网络如何实现跨主机互通,以及微服务之间的相互调用。网络是打通了,那服务之间的互相调用,该怎么实现呢?你可能说,咱不是学过 Socket 吗。服务之间分调用方和被调用方,我们就建立一个 TCP 或者 UDP 的连接,不就可以通信了?你仔细想一下,这事儿没这么简单。我们就拿最简单的场景,客户端调用一个加法函数,将两个整数加起来,返回它们的和。如果放在本地调用,那是简单的不能再简单了,只要稍微学过一种编程语言,三下五除二就搞定了。但是一旦变成了远程调用,门槛一下子就上去了。原创 2024-01-24 18:52:30 · 937 阅读 · 0 评论 -
第31讲 | 容器网络之Calico:为高效说出善意的谎言
上一节我们讲了 Flannel 如何解决容器跨主机互通的问题,这个解决方式其实和虚拟机的网络互通模式是差不多的,都是通过隧道。但是 Flannel 有一个非常好的模式,就是给不同的物理机设置不同网段,这一点和虚拟机的 Overlay 的模式完全不一样。在虚拟机的场景下,整个网段在所有的物理机之间都是可以“飘来飘去”的。网段不同,就给了我们做路由策略的可能。原创 2024-01-24 18:23:29 · 1153 阅读 · 0 评论 -
第30讲 | 容器网络之Flannel:每人一亩三分地
容器网络之Flannel原创 2022-03-21 21:02:38 · 281 阅读 · 0 评论 -
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
容器技术中的网络——容器网络如果说虚拟机是买公寓,容器则相当于合租,有一定的隔离,但是隔离性没有那么好。云计算解决了基础资源层的弹性伸缩,却没有解决 PaaS 层应用随基础资源层弹性伸缩而带来的批量、快速部署问题。于是,容器应运而生。容器就是 Container,而 Container 的另一个意思是集装箱。其实容器的思想就是要变成软件交付的集装箱。集装箱的特点,一是打包,二是标准。在没有集装箱的时代,假设要将货物从 A 运到 B,中间要经过三个码头、换三次船。每次都要将货物卸下船来,弄得乱七八原创 2022-03-21 19:40:56 · 534 阅读 · 0 评论 -
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
云中网络的隔离GRE、VXLAN对于云平台中的隔离问题,前面用的策略一直都是 VLAN,但是我们也说过这种策略的问题,VLAN 只有 12 位,共 4096 个。当时设计的时候,看起来是够了,但是现在绝对不够用,怎么办呢?一种方式是修改这个协议。这种方法往往不可行,因为当这个协议形成一定标准后,千千万万设备上跑的程序都要按这个规则来。现在说改就放,谁去挨个儿告诉这些程序呢?很显然,这是一项不可能的工程。另一种方式就是扩展,在原来包的格式的基础上扩展出一个头,里面包含足够用于区分租户的 ID,外层原创 2022-03-21 15:49:55 · 502 阅读 · 0 评论 -
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
云中的网络安全上一篇可以看到,做一个小区物业维护一个大家共享的环境,还是挺不容易的。如果都是自觉遵守规则的住户那还好,如果遇上不自觉的住户就会很麻烦。就像公有云的环境,其实没有你想的那么纯净,各怀鬼胎的黑客到处都是。扫描你的端口呀,探测一下你启动的什么应用啊,看一看是否有各种漏洞啊。这就像小偷潜入小区后,这儿看看,那儿瞧瞧,窗户有没有关严了啊,窗帘有没有拉上啊,主人睡了没,是不是时机潜入室内啊,等等。假如你创建了一台虚拟机,里面明明跑了一个电商应用,这是你非常重要的一个应用,你会把它进行安全加固原创 2022-03-21 12:27:53 · 252 阅读 · 0 评论 -
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
云中的网络安全上一节我们看到,做一个小区物业维护一个大家共享的环境,还是挺不容易的。如果都是自觉遵守规则的住户那还好,如果遇上不自觉的住户就会很麻烦。就像公有云的环境,其实没有你想的那么纯净,各怀鬼胎的黑客到处都是。扫描你的端口呀,探测一下你启动的什么应用啊,看一看是否有各种漏洞啊。这就像小偷潜入小区后,这儿看看,那儿瞧瞧,窗户有没有关严了啊,窗帘有没有拉上啊,主人睡了没,是不是时机潜入室内啊,等等。假如你创建了一台虚拟机,里面明明跑了一个电商应用,这是你非常重要的一个应用,你会把它进行安全加固。这台虚原创 2022-03-21 11:25:26 · 212 阅读 · 0 评论 -
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
云计算中的网络——软件定义网络上次说到,使用原生的 VLAN 和 Linux 网桥的方式来进行云平台的管理,但是这样在灵活性、隔离性方面都显得不足,而且整个网络缺少统一的视图、统一的管理。可以这样比喻,云计算就像大家一起住公寓,要共享小区里面的基础设施,其中网络就相当于小区里面的电梯、楼道、路、大门等,大家都走,往往会常出现问题,尤其在上班高峰期,出门的人太多,对小区的物业管理就带来了挑战。物业可以派自己的物业管理人员,到每个单元的楼梯那里,将电梯的上下行速度调快一点,可以派人将隔离健身区、景.原创 2022-03-21 09:20:25 · 960 阅读 · 0 评论 -
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
云计算中的网络(1)——云中网络数据中心里面堆着一大片一大片的机器,用网络连接起来,机器数目一旦非常多,人们就发现,维护这么一大片机器还挺麻烦的,有好多不灵活的地方。采购不灵活:如果客户需要一台电脑,那就需要自己采购、上架、插网线、安装操作系统,周期非常长。一旦采购了,一用就 N 年,不能退货,哪怕业务不做了,机器还在数据中心里留着。运维不灵活:一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦。规格不灵活:采购的机器往往动不动几百 G 的内存,而每个应用往往可能只需要 4 核原创 2022-03-20 20:58:11 · 241 阅读 · 0 评论 -
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
移动网络前面介绍的都是电脑上网的场景,那使用手机上网有什么不同呢?移动网络的发展历程手机上网有 2G、3G、4G 的说法,究竟这都是什么意思呢?有一个通俗的说法就是:用 2G 看 txt,用 3G 看 jpg,用 4G 看 avi。2G 网络手机本来是用来打电话的,不是用来上网的,所以原来在 2G 时代,上网使用的不是 IP 网络,而是电话网络,走模拟信号,专业名称为公共交换电话网(PSTN,Public Switched Telephone Network)。那手机不连网线,也不连原创 2022-03-20 17:10:15 · 1480 阅读 · 0 评论 -
第22讲 | VPN:朝中有人好做官
VPN前面介绍了数据中心,里面很复杂,但是有的公司有多个数据中心,需要将多个数据中心连接起来,或者需要办公室和数据中心连接起来。这该怎么办呢?第一种方式是走公网,但是公网太不安全,你的隐私可能会被别人偷窥。第二种方式是租用专线的方式把它们连起来,这是土豪的做法,需要花很多钱。第三种方式是用 VPN 来连接,这种方法比较折中,安全又不贵。VPN,全名 Virtual Private Network,虚拟专用网,就是利用开放的公众网络,建立专用数据传输通道,将远程的分支机构、移动办公人员原创 2022-03-20 15:24:21 · 1558 阅读 · 0 评论 -
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
数据中心无论你是看新闻、下订单、看视频、下载文件,最终访问的目的地都在数据中心里面。前面介绍了很多的网络协议和网络相关的知识,你是不是很好奇,数据中心究竟长啥样呢?数据中心是一个大杂烩,几乎要用到前面学过的所有知识。前面讲办公室网络的时候,我们知道办公室里面有很多台电脑。如果要访问外网,需要经过一个叫网关的东西,而网关往往是一个路由器。数据中心里面也有一大堆的电脑,但是它和咱们办公室里面的笔记本或者台式机不一样。数据中心里面是服务器。服务器被放在一个个叫作机架(Rack)的架子上面。数据原创 2022-03-20 13:12:11 · 3044 阅读 · 0 评论 -
第20讲 | CDN:你去小卖部取过快递么?
CDN上一篇,看到了网站的一般访问模式。当一个用户想访问一个网站的时候,指定这个网站的域名,DNS 就会将这个域名解析为地址,然后用户请求这个地址,返回一个网页。就像你要买个东西,首先要查找商店的位置,然后去商店里面找到自己想要的东西,最后拿着东西回家。那这里面还有没有可以优化的地方呢?例如你去电商网站下单买个东西,这个东西一定要从电商总部的中心仓库送过来吗?原来基本是这样的,每一单都是单独配送,所以你可能要很久才能收到你的宝贝。但是后来电商网站的物流系统学聪明了,他们在全国各地建立了很多仓原创 2022-03-19 16:34:22 · 169 阅读 · 0 评论 -
第19讲 | HttpDNS:网络世界的地址簿也会指错路
HttpDNS上一篇知道了 DNS 的两项功能,第一是根据名称查到具体的地址,另外一个是可以针对多个地址做负载均衡,而且可以在多个地址中选择一个距离你近的地方访问。然而有时候这个地址簿也经常给你指错路,明明距离你 500 米就有个吃饭的地方,非要把你推荐到 5 公里外。为什么会出现这样的情况呢?还记得吗?当我们发出请求解析 DNS 的时候,首先,会先连接到运营商本地的 DNS 服务器,由这个服务器帮我们去整棵 DNS 树上进行解析,然后将解析的结果返回给客户端。但是本地的 DNS 服务器,作为一原创 2022-03-19 14:05:57 · 142 阅读 · 0 评论 -
第18讲 | DNS协议:网络世界的地址簿
DNS协议前面说了平时常见的看新闻、支付、直播、下载等场景,现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住。于是,就需要一个地址簿,根据名称,就可以查看具体的地址。例如,我要去西湖边的“外婆家”,这就是名称,然后通过地址簿,查看到底是哪条路多少号。DNS 服务器在网络世界,也是这样的。你肯定记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿,就是 DNS 服务器。由此可见,DNS 在日常生活中多么重要。每个人上网,都需要访问原创 2022-03-19 10:57:55 · 209 阅读 · 0 评论 -
第17讲 | P2P协议:我下小电影,99%急死你
P2P协议如果你想下载一个电影,一般会通过什么方式呢?当然,最简单的方式就是通过 HTTP 进行下载。但是相信你有过这样的体验,通过浏览器下载的时候,只要文件稍微大点,下载的速度就奇慢无比。还有种下载文件的方式,就是通过 FTP,也即文件传输协议。FTP 采用两个 TCP 连接来传输一个文件。控制连接:服务器以被动的方式,打开众所周知用于 FTP 的端口 21,客户端则主动发起连接。该连接将命令从客户端传给服务器,并传回服务器的应答。常用的命令有:list——获取文件目录;reter——取一原创 2022-03-19 09:15:17 · 670 阅读 · 0 评论 -
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
流媒体协议很多人都喜欢看直播,那一个直播系统里面都有哪些组成部分,都使用了什么协议呢?无论是直播还是点播,其实都是对于视频数据的传输。一提到视频,大家都爱看,但是一提到视频技术,大家都头疼,因为名词实在是太多了。三个名词系列这里列三个名词系列,先大致有个印象。名词系列一:AVI、MPEG、RMVB、MP4、MOV、FLV、WebM、WMV、ASF、MKV。例如 RMVB 和 MP4,看着是不是很熟悉?名词系列二:H.261、 H.262、H.263、H.264、H.265。这个是不是原创 2022-03-18 21:56:41 · 440 阅读 · 0 评论 -
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
HTTPS协议:点外卖的过程用 HTTP 协议,看个新闻还没有问题,但是换到更加严肃的场景中,就存在很多的安全风险。例如,你要下单做一次支付,如果还是使用普通的 HTTP 协议,那你很可能会被黑客盯上。你发送一个请求,说我要点个外卖,但是这个网络包被截获了,于是在服务器回复你之前,黑客先假装自己就是外卖网站,然后给你回复一个假的消息说:“好啊好啊,来来来,银行卡号、密码拿来。”如果这时候你真把银行卡密码发给它,那你就真的上套了。那怎么解决这个问题呢?当然一般的思路就是加密。加密分为两种方式一种是原创 2022-03-18 18:13:52 · 137 阅读 · 0 评论 -
第14讲 | HTTP协议:看个新闻原来这么麻烦
应用层HTTP协议 ——看新闻讲述完传输层,接下来开始看看应用层的协议。从最常用的 HTTP 协议开始。HTTP 协议,几乎是每个人上网用的第一个协议,同时也是很容易被人忽略的协议。既然说看新闻,就先登录 http://www.163.com 。http://www.163.com 是个 URL,叫作统一资源定位符。之所以叫统一,是因为它是有格式的。HTTP 称为协议,www.163.com 是一个域名,表示互联网上的一个位置。有的 URL 会有更详细的位置标识,例如 http:..原创 2022-03-18 15:49:40 · 375 阅读 · 0 评论 -
第13讲 | 套接字Socket:Talk is cheap, show me the code
套接字Socket前面介绍了 TCP 和 UDP 协议,这次介绍下基于 TCP 和 UDP 协议的 Socket 编程。在讲 TCP 和 UDP 协议的时候,分客户端和服务端,在写程序的时候,也同样这样分。Socket 这个名字很有意思,可以作插口或者插槽讲。虽然我们是写软件程序,但是你可以想象为弄一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以在通信之前,双方都要建立一个 Socket。在建立 Socket 的时候,应该设置什么参数呢?Socket 编程进行的是端到端的通信,往原创 2022-03-18 11:17:56 · 231 阅读 · 0 评论 -
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
TCP协议(下)前面说到玄奘西行,要出网关。既然出了网关,那就是在公网上传输数据,公网往往是不可靠的,因而需要很多的机制去保证传输的可靠性,这里面需要恒心,也即各种重传的策略,还需要有智慧,也就是说,这里面包含着大量的算法。如何做个靠谱的人?TCP 想成为一个成熟稳重的人,成为一个靠谱的人。那一个人怎么样才算靠谱呢?咱们工作中经常就有这样的场景,比如你交代给下属一个事情以后,下属到底能不能做到,做到什么程度,什么时候能够交付,往往就会有应答,有回复。这样,处理事情的过程中,一旦有异常,你也可以尽原创 2022-03-18 08:52:20 · 268 阅读 · 0 评论 -
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
TCP协议(上)之前介绍了UDP,基本上包括了传输层所必须的端口字段。它就像我们小时候一样简单,相信“网之初,性本善,不丢包,不乱序”。后来呢,我们都慢慢长大,了解了社会的残酷,变得复杂而成熟,就像 TCP 协议一样。它之所以这么复杂,那是因为它秉承的是“性恶论”。它天然认为网络环境是恶劣的,丢包、乱序、重传,拥塞都是常有的事情,一言不合就可能送达不了,因而要从算法层面来保证可靠性。TCP 包头格式先来看 TCP 头的格式。从这个图上可以看出,它比 UDP 复杂得多。首先,源..原创 2022-03-17 22:09:52 · 251 阅读 · 0 评论 -
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
UDP协议说完了 IP 层以后,接下来开始说说传输层。传输层里比较重要的两个协议,一个是 TCP,一个是 UDP。对于不从事底层开发的人员来讲,或者对于开发应用的人来讲,最常用的就是这两个协议。由于面试的时候,这两个协议经常会被放在一起问,因而这里也会结合着来介绍。TCP 和 UDP 有哪些区别?一般面试的时候我问这两个协议的区别,大部分人会回答,TCP 是面向连接的,UDP 是面向无连接的。什么叫面向连接,什么叫无连接呢?在互通之前,面向连接的协议会先建立连接。例如,TCP 会三次握手,.原创 2022-03-17 20:28:56 · 416 阅读 · 0 评论 -
第9讲 | 路由协议:西出网关无故人,敢问路在何方
路由协议俗话说得好,在家千日好,出门一日难。网络包一旦出了网关,就像玄奘西行一样踏上了江湖漂泊的路。上次描述的是一个相对简单的情形。出了网关之后,只有一条路可以走。但是,网络世界复杂得多,一旦出了网关,会面临着很多路由器,有很多条道路可以选。如何选择一个更快速的道路求取真经呢?这里面还有很多门道可以说。如何配置路由?通过上次的内容,应该已经知道,路由器就是一台网络设备,它有多张网卡。当一个入口的网络包送到路由器时,它会根据一个本地的转发信息库,来决定如何正确地转发流量。这个转发信息库通常被称原创 2022-03-17 18:12:33 · 832 阅读 · 1 评论 -
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
怎么在宿舍上网?还记得在宿舍的时候买了台交换机,几台机器组了一个局域网打游戏吗?可惜啊,只能打局域网的游戏,不能上网啊!盼啊盼啊,终于盼到大二,允许宿舍开通网络了。学校给每个宿舍的网口分配了一个 IP 地址。这个 IP 是校园网的 IP,完全由网管部门控制。宿舍网的 IP 地址多为 192.168.1.x。校园网的 IP 地址,假设是 10.10.x.x。这个时候,你要在宿舍上网,有两个办法:第一个办法,让你们宿舍长再买一个网卡。这个时候,你们宿舍长的电脑里就有两张网卡。一张网卡的线插到你们宿舍的交原创 2022-03-17 14:32:58 · 148 阅读 · 0 评论 -
第7讲 | ICMP与ping:投石问路的侦察兵
ICMP与ping无论是在宿舍,还是在办公室,或者运维一个数据中心常常会遇到网络不通的问题。那台机器明明就在那里,你甚至都可以通过机器的终端连上去看。它看着好好的,可是就是连不上去,究竟是哪里出了问题呢?ICMP 协议的格式一般情况下,你会想到 ping 一下。那你知道 ping 是如何工作的吗?ping 是基于 ICMP 协议工作的。ICMP 全称 Internet Control Message Protocol,就是互联网控制报文协议。这里面的关键词是“控制”,那具体是怎么控制的呢?原创 2022-03-17 08:59:47 · 192 阅读 · 0 评论