reference: https://www.cnblogs.com/edisonchou/p/5987827.html

一、国际惯例:书托

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

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

二、网络基础知识

  2.1 计算机使用模式的演变

  2.2 协议

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

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

  2.3 协议分层与OSI参考模型

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

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

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

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

三、TCP/IP基础知识

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

  3.1 TCP/IP的背景及历史

  3.2 TCP/IP标准化

  (1)具体含义

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

  (2)标准化

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

  3.3 TCP/IP协议分层模型

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

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

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

四、IP协议及相关技术

  4.1 IP的主要作用

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

  4.2 IP的三大作用模块

  (1)IP寻址

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

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

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

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

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

  (3)IP分包与组包

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

IP为什么面向无连接:

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

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

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

  4.3 相关技术

  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隧道”。

五、TCP与UDP

  TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)

  5.1 传输层的作用

  TCP -> 面向连接的、可靠的流协议,提供可靠的通信传输。

所谓流,就是指不间断的数据结构,你可以把它想象成排水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。  

  UDP -> 面向无连接的,具有不可靠性的数据报协议。(让广播和细节控制交给应用的通信传输)

  TCP用于在传输层有必要实现可靠传输的情况,由于它是面向连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。而UDP则主要用于那些对高速传输和实时性有较高要求的通信或广播通信。

  因此,TCP和UDP应该根据应用目的按需使用。另外,在日常使用TCP或UDP时,通常会用到操作系统提供的类库,这种类库一般被称为API,对于TCP或UDP来说会广泛使用到套接字(Socket)的API。应用程序使用套接字时,可以设置对端的IP地址、端口号,并实现数据的发送与接收。

  5.2 端口号

  MAC地址和IP地址分别用来识别同一链路中不同的计算机以及TCP/IP网络中互连的主机和路由器。在传输层,则使用端口号来识别同一台计算机中进行通信的不同应用程序。

  一般知名端口号在0~1023之间,而我们经常使用的自定义/动态分配的端口号则一般在49152~65535之间。

  5.3 UDP

  UDP(User Datagram Protocol)不提供复杂的控制机制,利用IP提供面向无连接的通信服务。因此,它不会负责:流量控制、丢包重发等。

UDP广泛应用于:

  • 包量较少的通信(DNS、SNMP登)
  • 视频、音频等多媒体通信(即时通信)
  • 限定于LAN等特定网络中的应用通信
  • 广播通信(广播、多播)  

  5.4 TCP

  TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

  为了通过IP数据报实现可靠性传输,需要考虑很多事情,例如:数据的破坏、丢包、重复以及分片顺序混乱等问题。

  TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输

  使用TCP的一个连接的建立与断开,正常过程下至少需要来回发送7个包才能完成,也就是我们常常听到的三次握手,两次挥手。

六、路由协议

  在互联网世界中,夹杂着复杂的局域网和广域网,然后,再复杂的网络结构中,也需要通过合理的路由将数据发送到目标主机。而决定这个路由的,正是路由控制模块。

  6.1 静态路由和动态路由

  静态路由:事先设置好路由器和主机中并将路由信息固定的一种方法;

  eg.有100个IP网的时候,就需要手动设置近100个路由信息。并且,每增加一个新的网络,就需要将这个新追加的网络信息设置在所有的路由器上。因此,管理负担很大。此外,一旦某个路由器发生故障,基本上无法自动绕过发生故障的节点,必须手工设置后才能恢复。

  动态路由:让路由协议在运行过程中自动地设置路由控制信息的一种方法;

  eg.如果有一个新的网络追加到原有网络中,只要在新增加网络的路由器上进行一个动态路由的设置即可。此外,网络上一旦发生故障,路由器的设置也会自动重置。

  动态路由会给相邻路由器发送自己已知的网络连接信息,而这些信息又像接力一样依次传递给其他路由器,直到整个网络都了解时,路由控制表也就制作完成了,而此时也就可以正确转发IP数据包了。

  6.2 路由算法

  最具代表性的路由算法是:距离向量(Distance-Vector)算法和链路状态(Link-State)算法。

  (1)距离向量算法

  根据距离(代价)和方向决定目标网络或者目标主机位置的一种方法。

  (2)链路状态算法

  在了解网络整体连接状态的基础上生成路由控制表的一种方法,该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。

  6.3 路由协议

  (1)RIP(Routing Information Protocol)

  RIP是距离向量型的一种路由协议,广泛应用于LAN。

  广播路由:RIP将路由控制信息定期(30秒)向全网广播。

  确定路由:RIP基于距离向量算法决定路由,距离的单位被称为“跳数”(经过的路由器的个数),RIP希望经过尽可能少的路由器将数据包发送到目标IP地址。

  (2)OSPF(Open Shortest Path First)

  OSPF是一种链路状态型路由协议,即使网络中有环路,也能够进行稳定的路由控制。

七、应用协议

  7.1 远程登录

  Telnet利用TCP的一跳连接,通过这一条连接向主机发送文字命令并在主机上执行。但是Telnet中登录时无需输入密码就可以发送,容易造成通信窃听和非法侵入的危险。

  SSH是加密的远程登录系统,可以加密通信内容。即使信息被窃听也无法破解所发送的密码、具体命令以及命令返回结果是什么。

  7.2 文件传输

  FTP是在两个计算机之间进行文件传输时使用的协议,它使用两条TCP连接:一条用于控制,一条则用于数据的传输。

  (1)FTP控制使用的连接使用的是TCP21号端口

  (2)FTP用于数据传输的TCP连接通常使用20号端口

  7.3 电子邮件

  SMTP(Simple Mail Transfer Protocol)提供电子邮件服务协议,而一般接收端会使用POP3(Post Office Protocol)协议。

  (1)SMTP是发送电子邮件的协议,它使用TCP的25号端口。它在建立一个TCP连接以后,便在这个连接上进行控制和应答以及数据的发送。

  (2)POP是接收电子邮件的协议,它和SMTP一样,也是在客户端与服务端之间建立一个TCP连接完成相应操作。

  7.4 WWW

  HTTP(Hyper Text Transfer Protocol)默认使用TCP的80端口,首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP连接上进行请求和应答以及数据报文的发送。

  7.5 网络管理

  SNMP(Simple Network Management Protocol)常用语TCP/IP的网络管理。利用SNMP可以对连接到网络的设备进行远程管理,例如修改设置和确认是否运行正常等等。

《图解TCP/IP》读书笔记(转)的更多相关文章

  1. 图解TCP/IP读书笔记(二)

    图解TCP/IP读书笔记(二) 第二章.TCP/IP基础知识 一.TCP/IP出现的背景及其历史 年份 事件 20世纪60年代后半叶 应DoD(美国国防部)要求,美国开始进行通信技术相关的研发 196 ...

  2. 图解TCP/IP读书笔记(一)

    图解TCP/IP读书笔记(一) 第一章 网络基础知识 本学期的信安概论课程中有大量的网络知识,其中TCP/IP占了相当大的比重,让我对上学期没有好好学习计算机网络这门课程深感后悔.在老师的推荐下开始阅 ...

  3. 图解TCP/IP读书笔记(三)

    第三章.数据链路 数据链路层是计算机网络最基本的内容. 数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范. 一.数据链路相关技术 1.MAC地址 关于MAC地址的几个要点: ①MAC地址长度 ...

  4. # 图解TCP/IP读书笔记(五)

    第五章.IP协议相关技术 IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP是无法实现通信的,因此还有需要作为为IP的辅助的各种协议支持. 协议 作用 特点 DNS(Domain Name ...

  5. 图解TCP/IP读书笔记(四)

    第四章.IP协议 IP(Internet Protocol,网际协议),作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机.因此,IP能够让世界上任何两台计算机之间进行通信. ...

  6. TCP/IP读书笔记(4) IPv4和IPv6 路由选择

    TCP/IP读书笔记(4) IPv4和IPv6 路由选择 网络层是位于链路层之上,TCP/IP模型中网络层的核心协议是IP协议(Internet protocol). 目前主流的IP协议是IPv4(I ...

  7. 《图解TCP/IP》笔记

    OSI参考模型 协议分层 为什么需要分层? 简化网络协议. 每一层只需要衔接上下层的服务. 利于模块化开发. 解耦. 分层的问题 过分模块化.提高数据处理的开销. OSI参考模型 作用及意义 将复杂的 ...

  8. 《图解tcp/ip》读书笔记(二)

    <图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主 ...

  9. 读书笔记——《图解TCP/IP》(1/4)

    读书笔记——<图解TCP/IP>(1/4) 经典摘抄 第一章 网络基础知识 1.独立模式:计算机未连接到网络,各自独立使用的方式. 2.广域网 WAN 局域网 LAN 城域网 MAN 3. ...

  10. 读书笔记——《图解TCP/IP》(4/4)

    经典摘抄 第八章 应用层协议概要 1.应用协议是为了实现某种应用而设计和创造的协议. 2.TCP/IP的应用层包含了管理通信连接的会话层功能.转换数据格式的表示层功能,还包括与对端主机交互的应用层功能 ...

随机推荐

  1. Python核心编程的四大神兽

    http://www.cnblogs.com/ssy3340/p/9747722.html

  2. English trip EM2-PE-1B Teacher:Patirck

    PE = 演讲课 课上内容(Lesson) How are you today?  你今天怎么样? What is your name?  你的名字叫什么? What do you come from ...

  3. Winform开发框架之框架演化

    Winform开发框架方面的文章我介绍很多了,有宏观介绍,也有部分技术细节的交流,每次我希望能从不同角度,不同方面来介绍我的WInform开发框架,这些其实都是来源于客户的需求,真实的项目场景.本文主 ...

  4. Web版记账本开发记录(二)

    第二天又开始了,继续开始编辑之路. 今天在弄用户登录,也不知道为什么, 挺简单的一个程序耗时还挺多,在编程的过程中我发现昨天的思路有一些问题, 今天又重新理了一下思路. 还将昨天的表格给完善了一些,自 ...

  5. POJ-3107 Godfather 求每个节点连接的联通块数量

    dp[n][2],维护儿子的联通块数量和父亲的联通块数量. 第一遍dfs求儿子,第二遍dfs求爸爸. #include<iostream> #include<cstring> ...

  6. Confluence 6 有关空间的一些提示

    如果你已经为你的整个 Confluence 站点设置了特定主题(例如文档或者其他第三方的主题),你创建的空间将会集成你需要主题.如果你没有使用默认主题的话,你可能不能在边栏中看见蓝图. Conflue ...

  7. laravel调度任务

    <?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule;use Illuminate\Foundation ...

  8. Tanya and Password CodeForces - 508D (欧拉回路)

    大意:给定n个长为3的子串, 求一个长为n+2的字符串包含所有子串. 相邻两个字符开一个节点, 建图跑欧拉回路, 若存在的话长度一定是$\le n+2$.

  9. python 线程 进程

    1.进程与线程优.缺点的比较总言:使用进程和线程的目的,提高执行效率. 进程: 优点:能利用机器的多核性能,同时进行多个操作. 缺点:需要耗费资源,重新开辟内存空间,耗内存. 线程: 优点:共享内存( ...

  10. Spring注解之@validated的使用

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理.比如,我们判断一个输入参数是否合法,可以用如下方式 一 基础使用 因为spring-b ...