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

大家好,我是 杰哥
在这里插入图片描述
网络知识专栏的推送,依旧在继续~今天要推荐的是:《图解 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:可随机修改组织内各个子部门的子网掩码长度的机制

而 CIDR 与 VLSM 结合,相对缓解了全局 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

  • MTU 与 MSS 的关系

图片

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 的信息,实现信息收集、修改,路由器、设备启停等

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

RMON(Remoting 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 吗?

职业、生活感悟

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

程序员的职业规划

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

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

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

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值