网络知识 | 《图解TCP/IP》读书笔记(上)

【网络知识作者 / Edison Zhou

这是EdisonTalk的第290篇原创内容


作为一个专业的IT技术人,一个Web应用开发者,不了解网络基础和协议,怎么能行?本文是我2016年阅读《图解TCP/IP》一书的读书笔记,希望对你有所帮助!

1关于《图解TCP/IP》

这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。 
书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。

同时,这本书也是我的2016年度读书计划中的一本,下面我将会把我看书中的重点内容总结和重要图示摘录下来,所谓把书读薄,就是把精华内容留下,以供以后随时参考。

2网络基础知识

计算机使用模式的演变

协议

协议就是计算机与计算机之间通过网络实现通信事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果使用的协议不同,就无法通信。

分组交换是将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法。这里所说的包,就如同我们平常在邮局里见到的邮包。分组交换就是将大数据分装为一个个这样的邮包交给对方。

协议分层与OSI参考模型

协议分层就如同计算机软件中的模块化开发,OSI参考模型的建议是比较理想化的。

OSI参考模型中每个层的作用:

7层通信实例:假设主机A的用户A要给主机B的用户B发送一封电子邮件:

发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原装。

3TCP/IP基础知识

TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网的众多通信协议中最为著名的。

TCP/IP的背景及历史

TCP/IP的标准化

(1)具体含义

很多人都会认为TCP/IP是指TCP与IP两种协议,实际生活中有时也确实就是指这两种协议。然后,很多情况下,它只是利用IP进行通信时所必须使用到的协议群的统称。

(2)标准化

由于TCP/IP尽早地制定了可行性较强的协议,提出了应对技术快速革新的协议,并及时进行后期改良的方案,因此打败了OSI模型,成为了事实上的标准。

TCP/IP的协议分层模型

上图列出了TCP/IP与OSI分层之间的大概关系,不难看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。

现在再来看看主机A向主机B发送一封电子邮件,在TCP/IP模型下的处理过程:

分组数据包经过以太网的数据链路时的大致流程如下图所示:

4IP协议及相关技术

IP的主要作用

如上图所示,IP的主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。

IP的三大作用模块

(1)IP寻址

在计算机通信中,为了识别通信段,必须要有一个类似于地址的识别码进行标识。而在数据链路层,使用MAC地址来标识同一个链路中不同计算机的一种识别码。在网络层,则叫做IP地址。

(2)路由(最终节点为止的转发)

路由控制(Routing)是指将分组数据发送到最终目标地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。

Hop中文叫“跳”,它是指网络中的一个区间,IP包正是在网络中一个跳间被转发。数据链路实现某一个区间(一跳)内的通信,而IP实现直至最终目标地址的通信(点对点)。

为了将数据包发送给目标主机,所有主机都维护着一张路由控制表(Routing Table),该表记录IP数据在下一步应该发给哪一个路由器。IP包将根据这个路由表在各个数据链路上传输。

(3)IP分包与组包

IP面向无连接,即在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会被立即压缩成IP包发送出去。

IP为什么面向无连接?

  1. 简化:面向连接比起面向无连接处理相对复杂!

  2. 提速:每次通信之前都需要建立连接,会降低处理速度!

    需要有连接时,可以委托上一层(传输层)提供此项服务,因此,IP为了实现简单化与高速化采用面向无连接方式。

相关技术

(1)DNS

有效管理主机名和IP地址之间的对应关系->DNS系统,那么DNS查询的机制是什么呢?

(2)ARP

ARP是一种解决地址问题的协议,以目标地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。不过,ARP只适用于IPv4,不适用于IPv6。

RARP则是将ARP反过来,从MAC地址定位IP地址的一种协议。

(3)ICMP

一个刚刚搭建好的网络,需要验证该网络的设置是否正确。ICMP(Internet Control Message Protocol)这是提供这类功能的一种协议,其主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因等等。例如我们经常使用ping命令,就是一个典型的ICMP的具体应用。

(4)DHCP

如果逐一地为每一台主机设置IP地址会非常繁琐,于是为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP(Dynamic Host Configuration Protocol)协议。有了DHCP,计算机只要连接到网络,就可以进行TCP/IP通信。

(5)NAT

NAT(Network Address Translator)用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。

(6)IP隧道

在一个网络环境中,假如网络A、B使用IPv6,中间位置的网络C支持使用IPv4的话,网络A与网络B之间无法直接进行通信。为了让他们之间正常通信,这时需要采用IP隧道的功能。

IP隧道中可以将那些从网络A发过来的IPv6的包统和为一个数据,再为之追加一个IPv4的首部以后转发给网络C,这种在网络层的首部后面继续追加网络层首部的通信方法就叫做“IP隧道”。

Ref参考资料

[日]竹下隆史,《图解TCP/IP》

后台回复:图解TCP,即可获得pdf下载链接哟!

????扫码关注EdisonTalk

设为星标,不再失联!

往期推文合集:2020年上半年推文合集

成都新鲜坑位:喜鹊生活招聘.NET开发

十月送书福利:每天5分钟玩转Docker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发之semaphore(信号量)

文章目录1:官方解读2:通俗易懂的例子解析3:代码解析4:Semaphore的应用5:类结构和相关方法(1):类结构(2):acquire()方法(3):release()方法6:总结1:官方解读 semaphore信号量就是并发工具类,Semaphore管理着一组许可permit,许可的初始数量通过构造函数设定。 当线程要…

IdentityServer4系列 | 初识基础知识点

前言我们现在日常生活中,会使用各式各样的应用程序,层出不穷,其中有基于网页浏览方式的应用,有基于手机端的App,甚至有基于流行的公众号和小程序等等,这些应用,我们不仅要实现各个应用的功能之外…

八大排序算法之终章---归并排序

一:简单介绍 归并排序排序就是利用归并的思想实现的排序方法 它的原理是将初始化序列划分成n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到(n/2)个长度为1或者2的有序子序列;然后再两两合并…不断重复 直到最后 得到一个长度为n的有序…

Firefox 18周岁

Mozilla Firefox 起源于开源运动兴起之初建立的一个项目组织——Mozilla 社区,可以说是最早以“开源”名义出现,并取得成功的项目之一。Firefox 首次发行是在2002年的9月23日,当时的代号为“Phoenix”(凤凰)。18年过去…

三种方式让你轻松监控 EntityFramework 中的 sql 流转

大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们无法控制sql的生成策略,所以必须不要让自己缺乏好的工具去监控sql&…

java并发之CountdownLatch

一:CountdownLatch 1:基本含义 CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。CountDownLatch的作用也是如此,在构造CountDownLatch的时候…

leetcode142. 环形链表 II(详解)

一:题目 二:思路分析 三:上码 class Solution { public:ListNode *detectCycle(ListNode *head) {ListNode* slow head;ListNode* fast head;while (fast ! NULL && fast->next ! NULL && fast->next->next ! NULL) {//这里选用快指针fast fast-&g…

国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作

引言经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官方源上并没有正式发布,需要从Win64安装版本中的drivers/dotNet提取&…

网络知识 | 《图解TCP/IP》读书笔记(下)

【网络知识】| 作者 / Edison Zhou这是EdisonTalk的第291篇原创内容作为一个专业的IT技术人,一个Web应用开发者,不了解网络基础和协议,怎么能行?本文是我2016年阅读《图解TCP/IP》一书的读书笔记下半部分。上半部分:点…

leetcode202. 快乐数(详解)

一:题目 二:上码 class Solution { public:/**思路&#xff1a;1.破解这道题的关键是 我们得破解这个无限循环2.根据这个题目给出的定义2 我们可以知道 无限循环的条件是我们 在计算的过程中出现了自己的数*/bool isHappy(int n) {unordered_set<int>s;s.insert(n);…

自由软件基金会庆祝成立35周年

美国东部时间 10 月 4 日&#xff0c;自由软件基金会&#xff08;Free Software Foundation&#xff0c;FSF&#xff09;在官网发文庆祝”其为争取软件自由而奋斗的第 35 年“。1985 年 10 月&#xff0c;自由软件运动的主要发起人 RMS&#xff08;Richard Matthew Stallman&am…

使用 C# sdk 连接 高可用的 rabbitmq 镜像集群

我们知道rabbitmq是一个专业的MQ产品&#xff0c;而且它也是一个严格遵守AMQP协议的玩意&#xff0c;但是要想高端大气上档次&#xff0c;一定需要拿出高可用的东西出来&#xff0c;这不本篇就跟大家说一下cluster的概念&#xff0c;rabbitmq是erlang写的一个成品&#xff0c;所…

java并发之CyclicBarrier(通俗易懂)

文章目录一:简介(1):官方解释(2):通俗解释a:CountDownLatch()b:CyclicBarrier()二:小demo一:简介 (1):官方解释 说到简介那就非得拿他和countdownlatch()进行比较讨论了CountDownLatch是一个同步的辅助类&#xff0c;允许一个或多个线程&#xff0c;等待其他一组线程完成操作…

BeetleX之简单HTTP/HTTPS实现

在通讯应用中很多时候需要和已有标准的应用协议进行通讯&#xff0c;针对这情况就要针对相应协议的实现&#xff1b;标准协议上考虑的情况比较多&#xff0c;所以协议的复杂度也相对高些&#xff0c;对比之前的Protobuf通讯的简单协议来说则会复杂。接下来用组件去实现一个简单…

体验.NET5 RC1极致性能,你也要“卧槽”!

“ 9月14日&#xff0c;.NET5发布了(Release Candidate)RC1版本&#xff0c;是11月正式版本之前两个RC版本中第一个&#xff0c;包含语言新版本C#9和F#5&#xff0c;需要用Visual Studio 2019 (v16.8, Preview 3)才能使用&#xff0c;注意不是Visual Studio 2019&#xff0c;二…

leetcod383. 赎金信

一:题目 二:上码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {unordered_map<char,int>m;for (auto ch:ransomNote) {m[ch];}for (auto ch: magazine) {if(m.find(ch) ! m.end() && m[ch] > 0) m[ch]--;//当magazine中的…

马斯克推崇的第一性原理,究竟有多重要?

职场&认知洞察 丨 作者 / findyi这是findyi公众号的第79篇原创文章最近&#xff0c;第一性原理这个原本离大众很远的物理概念&#xff0c;被媒体炒的火热。第一性原理最开始是由亚里士多德提出来的。他认为任何一个系统都有一个「第一性原理」。他说&#xff1a;“在每个系…

Gartner 组织世界BI大会,PowerBI 与 Tableau 同台竞技

日前&#xff0c;Gartner 组织了全球顶级 BI 产品大会&#xff0c;由于疫情影响&#xff0c;只能远程举办。官方网址如下&#xff1a;https://blogs.gartner.com/rita-sallam/2020/09/11/bi-bake-off-goes-virtual/该会议的原文为&#xff1a;BI Bake-Off&#xff0c;含义为&am…

leetcode15. 三数之和(详解)

一:题目 二:上码 class Solution { public:/**思路:1.这个题出其不意之处在于,其先对这个序列进行了排序排序的好处是1>:如果首元素是大于0的,那么如果无论无何也凑不出02>:同时我们也把相同的元素凑成一块了 可以方便去重了2.接下来,我们就是利用双指针 来处理 数据是否…

BeetleX之TCP消息通讯Protobuf/TLS

在网络通讯应用中直接操作数据流是比较繁琐的事情&#xff0c;毕竟在业务层面处理的都是对象化消息&#xff1b;为了让网络数据操作变得更友好直观&#xff0c;一般都会引用序列化组件来处理网络流和对象之前的转换工作&#xff1b;在这里介绍组件如何使能Protobuf进行数据交互…