Go to my github
返回主页Edison Zhou坚持学习,善于总结,乐于分享…

《图解TCP/IP》读书笔记
一、国际惯例:书托
TCP/IP

这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解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网络中互连的主机和路由器。在传输层,则使用端口号来识别同一台计算机中进行通信的不同应用程序。

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

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可以对连接到网络的设备进行远程管理,例如修改设置和确认是否运行正常等等。

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

分类: 【011】读书笔记系列, 【012】计算机专业基础
标签: TCP/IP, 网络基础
好文要顶 关注我 收藏该文
EdisonZhou
关注 - 60
粉丝 - 4273
推荐博客
+加关注
关注 Edison Zhou
470
快速评论
« 上一篇: Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
» 下一篇: 借助GitHub托管你的项目代码
posted @ 2016-10-23 15:53 EdisonZhou 阅读(19875) 评论(4) 编辑 收藏

评论列表
回复 引用#1楼 2017-11-02 11:02 chyuanliu
楼主看完这一本书大概需要多久呢?
支持(0) 反对(0)
回复 引用#2楼 2018-03-05 16:53 豹王
楼主真的是一位很极致的人
支持(0) 反对(0)
回复 引用#3楼 2018-12-13 11:23 哈喽林联敏
精致男孩
支持(0) 反对(0)
回复 引用#4楼 2019-09-14 15:33 -猪是念来过倒
这些总结实在是太精髓了!
支持(0) 反对(0)
刷新评论刷新页面返回顶部
发表评论
编辑
预览
支持 Markdown
退出 订阅评论

[Ctrl+Enter快捷键提交]

【推荐】News: 大型组态、工控、仿真、CADGIS 50万行VC++源码免费下载
【推荐】有你助力,更好为你——博客园用户消费观调查,附带小惊喜!
【推荐】博客园x丝芙兰-圣诞特别活动:圣诞选礼,美力送递
【推荐】了不起的开发者,挡不住的华为,园子里的品牌专区
【福利】AWS携手博客园为开发者送免费套餐+50元京东E卡
【推荐】未知数的距离,毫秒间的传递,声网与你实时互动
【推荐】新一代 NoSQL 数据库,Aerospike专区新鲜入驻
相关博文:
· TCP/IP
· TCP/IP协议
· TCP-IP详解
· TCP/IP协议
· TCP/IP协议
» 更多推荐…
公告
aliyun-mvp
姓名:周旭龙
洋名:Edison Zhou
状态:奋力搬砖中
现居:成都
技能:码砖与扯淡
关注:.NET Core、C#、微服务、DevOps、企业数字化转型等
爱好:足球、阅读、电影、跑步
座右铭:“大志非才不就,大才非学不成”
Email:edisonchou7@qq.com
GitHub:Fork Me
公众号:EdisonTalk
与你聊聊技术、产品、读书与成长
wechat code
友情链接
01.圣杰-颜圣杰
02.田园里的蟋蟀-岳中新
03.草根专栏-杨旭
04.懒得勤快-陈宇
05.晓晨Master-李志强
微博:EdisonTalk

昵称: EdisonZhou
园龄: 8年9个月
荣誉: 推荐博客
粉丝: 4273
关注: 60
+加关注
搜索

积分与排名
积分 - 1046925
排名 - 153
随笔分类 (540)
【001】.NET基础之美(22)
【002】ASP.NET WebForm(15)
【003】ASP.NET MVC(12)
【004】Java那些事儿(5)
【005】容器技术 & DevOps(36)
【006】NoSQL(7)
【007】OOAD与设计模式(27)
【008】Unity VR & AR(7)
【009】Web前端开发(4)
【010】大型网站技术探索(13)
更多
随笔档案 (429)
2020年12月(11)
2020年11月(7)
2020年9月(3)
2020年8月(5)
2020年7月(6)
2020年6月(4)
2020年5月(7)
2020年3月(3)
2020年2月(3)
2020年1月(1)
更多
最新评论

  1. Re:ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建
    Markdown

–有头小熊猫
2. Re:操作系统核心原理-2.一些基本概念
操作操作系统内核原理的资料我也整理了一份,需要的朋友进1160405674这个囷找我拿吧,无偿的

–图灵学院在线
3. Re:基于Docker的Consul服务发现集群搭建
@屌丝大叔的笔记 理论上是的,不过你可以给负载均衡器比如Nginx做高可用,通过Keepalived搭一个主从结构,防止负载均衡节点挂了不能保持可用性。…
–EdisonZhou
4. Re:基于Docker的Consul服务发现集群搭建
HA示例整体架构这张图里面,两个负载均衡中的任意一个挂了,是不是都不能提供服务了?

–屌丝大叔的笔记
5. Re:2019 .NET China Conf:路一直都在,社区会更好
Minkube=>Minikube

–面包快跑
阅读排行榜

  1. Spring Cloud 微服务架构学习笔记与示例(278073)
  2. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡(70408)
  3. 你必须知道的Dockerfile(65377)
  4. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器(50556)
  5. 自己动手写工具:自动点击小插件(49663)
    评论排行榜
  6. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器(86)
  7. .NET Core微服务之基于Consul实现服务治理(81)
  8. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡(63)
  9. Exceptionless 5.0.0 本地Docker快速部署介绍(57)
  10. .NET全栈开发工程师学习路径(56)
    推荐排行榜
  11. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器(237)
  12. .NET基础拾遗(5)多线程开发基础(213)
  13. .NET Core微服务架构学习与实践系列文章目录(188)
  14. .NET全栈开发工程师学习路径(170)
  15. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡(156)
    Copyright © 2020 EdisonZhou
    Powered by .NET 5.0 on Kubernetes

2020-12-28 TCP协议相关推荐

  1. 如何将谷歌浏览器的背景色(包括显示的网站界面等)全部调为黑色?2020.12.28

    (请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419 因为电脑显示器正对窗户的原因,平时为了透气通风不能使用遮 ...

  2. 458、Java框架112 -【MyBatis - 一级缓存、二级缓存】 2020.12.28

    目录 0.一级缓存 1.在一个Session里查相同id的数据 2.在不同Session里查相同id的数据 3.二级缓存 4.基于前一个知识点 5.观察无二级缓存 6.启动二级缓存 7.在Catego ...

  3. 2020.12.28 ps临摹

    欢迎观看阿贝贝啊的今日成果 今天临摹了一张书本上的作业 涉及的工具不是很多,都是基础小玩意. 需要素材可私聊. 感谢观看阿贝贝啊的今日划水 日常 .

  4. 复制列表 -copy() 2020.12.28

    复制列表 -copy() 基本格式 案例演示 查看结果

  5. 网络笔记(12) TCP协议(下):西行必定多妖孽,恒心智慧消磨难

    我们前面说到玄奘西行,要出网关.既然出了网关,那就是在公网上传输数据,公网往往是不可靠的,因而需要很多的机制去保证传输的可靠性,这里面需要恒心,也即各种重传的策略,还需要有智慧,也就是说,这里面包含着 ...

  6. 2020.12.21-12.28 人工智能行业每周技术动态

    本周是2020年的最后一周,还有3天,2020年就将画上句号. 这一年的计划,大家都完成了吗? 因为疫情的原因,很多人都感觉时间太短,一晃就到了年末,又到了为新的一年做规划的时间了. 大白也在反思,这 ...

  7. 重学TCP协议(12)SO_REUSEADDR、SO_REUSEPORT、SO_LINGER

    1. SO_REUSEADDR 假如服务端出现故障,主动断开连接以后,需要等 2 个 MSL 以后才最终释放这个连接,而服务重启以后要绑定同一个端口,默认情况下,操作系统的实现都会阻止新的监听套接字绑 ...

  8. TCP协议连环12问

    本文分享下TCP协议常见面试题,看下你是不是都已经掌握了.TCP 作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点.在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各 ...

  9. Go基于I/O多路复用的TCP协议流解析实践

    在<Go经典阻塞式TCP协议流解析的实践>一文中,我们基于Go经典的阻塞I/O模型实现了一个基于TCP流的自定义协议的解析.这种one-connection-per-goroutine模型 ...

  10. 基于TCP协议的进程间通信

    TCP协议是应用在传输层的协议.是一种面向连接的.可靠的协议. TCP协议的特点: 1)面向字节流. 2)TCP是面向连接的运输层协议 3) 每一条TCP链接只能有两个端点 4)TCP提供可靠交付的服 ...

最新文章

  1. Kaggle第一人 | 详细解读2021Google地标识别第一名
  2. 操作像素(一)--存取像素值
  3. npm安装过程出现的问题及解决方式
  4. document,element,node方法
  5. 怎么博客圆的文章越来越杂?
  6. JavaFX 2.0示例介绍书
  7. pytorch微调bert_小版BERT也能出奇迹:最火的预训练语言库探索小巧之路
  8. mysql复杂查询教程_mysql 复杂查询
  9. centos7安装git踩坑记
  10. java中equals,hashcode和==的区别
  11. 拓端tecdat|R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集
  12. 如何借助OpManager解决存储监控问题?
  13. vue验证码图片显示不出来,将图片转换为base64格式显示
  14. 跨越opengl和d3d的鸿沟(四):完结篇,平台和未来
  15. 滑动窗口算法思想,找出字符串中的所有字母异位词
  16. word中常用快捷键
  17. ​透过享云链白皮书 看到开启云计算更大一扇门
  18. python怎么安装scrapy_windows下安装python+scrapy
  19. 西门子S7通信协议以及JAVA版的实现
  20. MySQL 5.7 Windows 免安装版 配置

热门文章

  1. 全息图算法:加权Gerchberg-Saxton算法(GSW)
  2. php array rsort,PHP数组的排序
  3. bzoj1189 [HNOI2007]紧急疏散evacuate(二分答案+bfs+最大流判是否满流)
  4. 经典sql,高级sql
  5. Linux下摄像头驱动程序spca5xx和gspca
  6. 货币金融学(5): 货币需求与供给
  7. 电压放大器在非共线混频方法检测混凝土中的应用
  8. 真有意思,AI高引论文排行榜:OpenAI和DeepMind未进前十,旷视排第二?
  9. 算法设计与分析 实验二 贪心算法
  10. 荷兰光刻机巨头——ASML