百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

网络篇(四):《图解 TCP/IP》读书笔记

myzbx 2025-04-24 05:30 41 浏览

大家好,我是 杰哥

网络知识专栏的推送,依旧在继续~今天要推荐的是:《图解 TCP/IP 》

再次看完一本网络的书籍,更加感觉到网络中常用的知识其实也就那么多,只是不同的作者会根据自己的经验,站在不同的角度进行讲解而已

而通过阅读多本网络书籍,则可以站在不同的角度,使得自己在查漏补缺的基础上,碰撞出更多的火花,从而对于这个体系的印象不断加深

这本书与之前的两本书《网络是怎样连接的》《趣谈网络协议》还是有很多交集的,比如说都有着重介绍 TCP 的可靠性实现原理TCP 与 UDP 的不同之处OSI 参考模型以及 TCP/IP 分层模型,以及 IP 协议的相关技术:DNS、ARP、ICMP、DHCP、NAT 以及 IP 隧道等。而这些基本上在之前的网络知识专栏中都有介绍,只是会有粒度的粗细、角度的不同等区别,因此本次笔记只列出了一些之前未提到过的内容

一、网络类型

1、共享介质型网络

有两种介质访问控制方式:

2、非共享介质型网络

网络中的每个站直连交换机的各个端点,由交换机负责转发数据帧,发送端与接收端不共享介质,因此很多情况下采用全双工的通信方式

二、IP 地址的基础知识

1、IP 多播

1)可以同时给特定的组内成员发送,并且可以穿透路由(广播无法穿透路由)

2)使用 D 类地址,即首位 IP 地址为 “1110

2、如何解决全局地址不够用的问题?

说起来,有以下三种方法:

  • CIDR 与 VLSM

CIDR:采用任意长度分割 IP 地址的网络标识和主机标识

VLSM:可随机修改组织内各个子部门的子网掩码长度的机制

CIDRVLSM 结合,相对缓解了全局 IP 地址不够用的问题

  • NAT

在每个终端设置私有 IP 地址,而在路由器(宽带路由器)或者必要的服务器上设置全局 IP 地址。如果配有私有 IP 的主机需要联网时,则通过 NAT 进行通信

  • 代理服务器

采用少数设置全局 IP 地址的代理服务器结合 NAT 的设置进行互联网通信。在这种情况下,IP 地址个数就不局限于 LAN 中主机个数,而是由代理服务器和 NAT 的个数决定,所以会大大降低全局地址的使用频率

4、差错控制区别

七层模型中,数据链路层、网络层以及传输层都有差错控制的机制,那么他们的差错控制都有什么区别呢?

实际上,七层模型是在尽量保证可靠的传输,即要尽可能地做到:不错(没有比特差错),不丢(丢包),不乱(按序到达)。而每一层只需要校验本层的数据不发生错误即可

  • 数据链路层

是为了防止网卡软硬件 bug、电缆不可靠、信号干扰而造成信号失真的数据错误,也就是只负责单个帧的正确性检查。如果不检查,将一直到达目的地主机,很有可能到达传输层才会校验出错误

  • 网络层

网络层的校验只用于针对网络层的头部的正确性检查。好比货车司机只管车,车跑得好他就放心了。箱子里的水果坏没坏是传输层的事,它是不用管的

  • 传输层

是对于路由器内存故障程序漏洞导致的数据是否被破坏的问题检查

5、既然IP层会分片,为什么 TCP 层也还要分段?

首先,对于一次网络交互需要传输的数据量太大时,就需要对数据分块进行传输。这个行为在 TCP 里,叫分段,在 IP 层,叫分片。那么,达到多大才需要分呢?TCP 层,叫 MSS, IP 层,叫 MTU

  • MSS是什么?

MSS:Maximum Segment Size ,段的最大字节数,是 TCP 用来限制应用层最大的发送字节数

MSS 会在三次握手的过程中传递给对方,用于通知对端本地最大可以接收的 TCP 报文数据大小,在每次执行 TCP 发送消息的函数时,会重新计算一次 MSS 的值,用于后续的分段操作

  • MTU是什么?

MTU: Maximum Transmit Unit,最大传输单元。这个是由数据链路层提供,为了告诉上层 IP 层,自己的传输能力是多大。IP 层就会根据它进行数据包切分。一般 MTU=1500 Byte

假设 IP 层有小于等于 1500 byte 数据需要发送,只需要一个 IP 包就可以完成发送任务;假设 IP 层有大于 1500 byte 数据需要发送,则需要分片才能完成发送,分片后的 IP Header ID 相同,同时为了分片后能在接收端把切片组装起来,还需要在分片后的 IP 包里加上各种信息。比如这个分片在原来的 IP 包里的偏移 offset

  • MTUMSS 的关系

MSS = MTU - 20(IP Header) -20 (TCP Header) 


那么,既然 IP 层会分片,在 TCP 层为何还要分段呢?

1)数据在 TCP 分段,其实是为了在 IP 层不需要分片

只要以链路中最小的 MTU 所对应的 MSS 进行数据发送即可实现 IP 的不分片,而当 MTU 的值一旦确定了,MSS 也就随之确定了,因此便可以实现 在 TCP 分段之后,在 IP 层不再需要分片了

  • 而 IP 层是如何实现不分片的呢?

设想一下,当链路中存在多个 MTU 时,刚开始以一个比较大的 MTU 发送时,在中间遇到了比较小的 MTU 时,必然需要进行分片。所以,只需要在发送数据前,找到链路中最小的 MTU,并以这个 MTU 进行数据的发送,则全程都不会涉及到数据的分片操作了

2)减少网络带宽的消耗

TCP 为了保证可靠性具有重传机制。分段之后,当发生重传的时候,只需要重传分段后的小份数据,不用再重传原来比较大的数据了,这样可以减少网络带宽的消耗

三、IP 协议

1、MTU 不同

不同的数据链路,有不同的 MTU(最大传输单元),主要是不同类型的数据链路的使用目的不同

2、IP 报文的分片与重组

规定只能在终结点(目标主机)进行被分片数据的重组

3、路径 MTU 发现

获得从发送端主机到接收端主机之间不需要分片时的最大 MTU 的大小,即路径中存在的所有链路中最小的 MTU,从而避免在中途的路由器上进行分片处理

总结

以链路中最小的 MTU 进行发送,并规定在目标主机才会进行数据的重组,那么就会实现在发送端主机进行分片,在接收端主机进行重组的效果,避免过程中的频繁重组、分片带来的网络效率降低的问题

四、路由控制协议

1、RIP

1)Routing Information Protocol,路径信息协议。将路由控制信息定期(30 s)向全网广播,若超过 5 次 未收到路由控制信息,连接断开

2)根据距离向量确定路由

选择路由器个数最少的路径(即距离最短的路径)

3)RIP无限计数问题:收到自己发出去的消息

解决方法

a. 最长距离不超过 16。由此即使发生无限计数问题,也可以从时间上进行控制

b. 规定路由器不再把接收到的路由信息返还给发送端,即水平分割

环路时,还需要以下方法来解决:

a.毒性逆转

直接将无法通信的消息传播出去

b.触发更新

当路由信息发生变化时,不等待 30 s,而是立刻发送出去

2、OSPF

Open Shortest Path First,开放最短路径优先。是一种基于链路状态的路由协议,选择总的代价较小的路径

相对于 RIP 协议来说:

1)通过引入区域的概念,减少计算负荷,即每个路由器向其同一管理域的所有其他路由器发送链路状态广播信息,而不是全网

2)不用像 RIP 协议那样,定期交换相同的路由控制信息,浪费带宽,而是发生变更时,只推送变更的信息

3、BGP 协议

是一种路径向量协议。类似于距离向量协议:RIP。但它不仅包含了转发的方向和距离,还涵盖了途经所有 AS(自治系统)的编号,并且能够检测出环路

五、应用层协议

1、电子邮件

为了解决邮件接收方在没有开机的情况下,无法接收到邮件的问题。在邮件的发送方与接收方之间,增加一台邮件服务器,用于接收发送端的所发送的邮件

根据 SMTP 协议将被转发给一直处于插电状态的邮件服务器,接收客户端再根据 POP 协议或者 IMAP 协议从邮件服务器接收对方发来的邮件

POP 协议和 IMAP 协议都属于接收电子邮件的协议。但两者还是有区别的:

POP(Post Office Protocol):邮局邮件协议,由客户端将电子邮件下载本地,对邮件进行本地的操作

IMAP(Internet Mail Access Protocal):交互式邮件访问协议。由服务器直接进行电子邮件的管理,客户端不用将电子邮件下载到本地便可进行操作

2、SNMP-网络管理协议

可以读写 MIB 的信息,实现信息收集、修改,路由器、设备启停等

MIBManagement Information Base):管理信息库,由监控网络中某个接口设备(点)的众多参数组成。包括受管设备必须保存的数据项、允许对每个数据项进行的操作及其含义等信息

RMONRemoting Monitoring MIB):远程监控的 MIB。由监控网络上线路的众多参数构成(线)

因此,RMON,可以实现以终端或者协议为单位进行监控。是判断当前网络是否被充分利用的重要资料

六、提高网络利用率的规范

1、Nagle 算法

需要一直等到满足以下两个条件的其中一个,才可以发送

  • 1)已发送的数据都已经收到确认应答时
  • 2)可以发送最大段长度(MSS)的数据时

优点:网络利用率大

缺点:会发生某种程度的延迟

2、延迟确认应答

  • 原因

接收数据的主机,刚接收完数据,缓冲区往往是满着的。这个时候如果立即返回确认应答,那么应答的窗口的大小是偏小的

  • 机制

收到数据以后,并不立即返回确认应答,而是延迟一段时间返回

3、捎带应答

TCP 的确认应答和回执数据可以通过一个包发送。通过启用延迟确认应答来实现

可以减少收发的数据量,是提高网络利用率从而降低计算机处理负荷的一种较优的处理机制

七、传输层协议

除了 UDPTCP 协议以外,还有如下几种较为常用的协议:

1、UDP-Lite

轻量级用户数据报协议,是 UDP 的修正版协议,实现校验和的范围由应用自行决定,只针对不允许发生错误的部分进行校验和的检查,对于其他部分,即使发生了错误,也会被忽略不计

2、SCTP

流控制传输协议,是 TCP 的一种扩展协议。支持多重宿主,即对于同一台主机有多个网卡的情况,即使其中的以太网与无线 LAN 之间的切换,也能够保持通信不中断

3、DCCP

UDP 基础上进行拥塞控制的一种协议

八、为什么 UDP 和 TCP 都有一个伪首部?

伪首部的内容包括源 IP 地址目标 IP 地址协议号

由于 UDP 的首部只包含通信 5 要素中的其中两个:源端口目标端口,因此增加了需要的 3 项:源 IP 地址目标 IP 地址协议号。只有对于这 5 要素进行校验,才有意义

九、总结

好了,《图解 TCP/IP 》的读书笔记就这些了。最近时间的确是不够用,这本书也是每天挤出时间来看的~


看完之后,你会发现随着对网络体系了解得越来越多,得到的不仅是更多的网络知识,还能够看到网络中的一些比较优秀的架构设计思路。比如网络的分层、各个网络层的独立封装、类似于发布订阅思维的邮件服务器的引入等思想


嗯,就这样。每天学习一点,时间会见证你的强大~


欢迎大家关注我们的公众号,一起持续性学习吧~



往期精彩回顾


总结复盘

架构设计读书笔记与感悟总结

带领新人团队的沉淀总结

复盘篇:问题解决经验总结复盘

网络篇

网络篇(二):《趣谈网络协议》读书笔记(二)

网络篇(一):《趣谈网络协议》读书笔记(一)

事务篇章

事务篇(四):Spring事务并发问题解决

事务篇(三):分享一个隐性事务失效场景

事务篇(一):毕业三年,你真的学会事务了吗?

Docker篇章

Docker篇(六):Docker Compose如何管理多个容器?

Docker篇(二):Docker实战,命令解析

Docker篇(一):为什么要用Docker?

..........

SpringCloud篇章

Spring Cloud(十三):Feign居然这么强大?

Spring Cloud(十):消息中心篇-Kafka经典面试题,你都会吗?

Spring Cloud(九):注册中心选型篇-四种注册中心特点超全总结

Spring Cloud(四):公司内部,关于Eureka和zookeeper的一场辩论赛

..........

Spring Boot篇章

Spring Boot(七):你不能不知道的Mybatis缓存机制!

Spring Boot(六):那些好用的数据库连接池们

Spring Boot(四):让人又爱又恨的JPA

SpringBoot(一):特性概览

..........

翻译

[译]用 Mint 这门强大的语言来创建一个 Web 应用

【译】基于 50 万个浏览器指纹的新发现

使用 CSS 提升页面渲染速度

WebTransport 会在不久的将来取代 WebRTC 吗?

.........

职业、生活感悟

你有没有想过,旅行的意义是什么?

程序员的职业规划

灵魂拷问:人生最重要的是什么?

如何高效学习一个新技术?

如何让自己更坦然地度过一天?

..........

相关推荐

如何设计一个优秀的电子商务产品详情页

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...

怎么在JS中使用Ajax进行异步请求?

大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...

中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革

前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...

前端监控 SDK 开发分享_前端监控系统 开源

一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...

Ajax 会被 fetch 取代吗?Axios 怎么办?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...

前端面试题《AJAX》_前端面试ajax考点汇总

1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...

Ajax 详细介绍_ajax

1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...

6款可替代dreamweaver的工具_替代powerdesigner的工具

dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光

时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...

不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!

Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...

2025 年 Python 爬虫四大前沿技术:从异步到 AI

作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...

最贱超级英雄《死侍》来了!_死侍超燃

死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...

停止javascript的ajax请求,取消axios请求,取消reactfetch请求

一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...