《图解TCP/IP》笔记
OSI参考模型
协议分层
为什么需要分层?
- 简化网络协议。
- 每一层只需要衔接上下层的服务。
- 利于模块化开发。
- 解耦。
分层的问题
过分模块化、提高数据处理的开销。
OSI参考模型
作用及意义
- 将复杂的通信协议整理为7个容易理解的层次。
- 对通信中的必要功能做了归纳。
- 没有详细定义协议和接口,只是规定了各个层的大致功能。
ps:OSI参考模型和OSI协议的区别。OSI协议是让异构的计算机之间能够通信、由OSI推进的一种网络体系结构。二者不能混淆。
各个分层的作用
- 物理层 :硬件层面上对信号的规定。
- 数据链路层:负责物理层上面的互联、节点之间的数据传输,设备之间传送和识别的数据帧。
- 网络层:将数据传输到目标地址,网络地址管理和路由选择。
- 传输层:管理两个节点之间的数据传输,保证数据的可靠性。
- 会话层:负责建立和断开通信连接。
- 表示层:设备的数据格式和网络标准的数据格式的转换。
- 应用层:针对特定应用层面的协议。
TCP/IP基础知识
TCP/IP具体含义
TCP/IP是IP网际协议族,泛指利用IP进行通信时所必须用到的协议群。
互联网与TCP/IP
TCP/IP本就是为使用互联网而开发指定的协议族。所以,互联网的协议就是TCP/IP。
- 什么是互联网?
较小范围内的网络之间相连组成局域网,局域网再连接组成区域网,区域网再互连,组成全世界的互联网。
互联网中每个网络都是由骨干网和末端网组成。 - 如何连接互联网?
连接互联网需要向ISP(互联网服务提供商)或区域网提出申请。一般只要联系ISP签约即可。
TCP/IP分层模型
大致和OSI七层模型类似,OSI更注重每一层协议的必要功能,而TCP/IP更注重每层在计算机上开发具体的程序。
TCP/IP分层中将OSI的会话层、表示层和应用层都整合成了这里应用层进行实现。
数据链路
作用
处理数据帧,并在MAC层上传输。
相关技术
MAC地址
MAC地址是硬件层面的标识号,用于识别数据链路中的节点。网卡的MAC地址都是唯一的。
在总线型和环路型网络中,会读取总线上所有的数据帧,再通过MAC地址寻址,如果是发给自己的接收,不是就丢掉。
根据MAC地址转发
以太网交换机就是持有多个接口的网桥,它们会根据链路层中每个帧的目标MAC地址再确定将数据帧转发到哪个端口。
交换机会有一个转发表,用于存储MAC地址设备对应的端口。
环路检测技术
数据帧可能在网络中反复被转发,造成数据堆积。
两种解决方法:
- 生成树:在周期时间内检查网络的结构,并判断端口的使用和废弃,从而消除环路。弊端是发生故障网络切换的时间过长。
- 源路由法:通过判断发送数据的源地址,记录其经过的网桥,然后通过这个记录信息就不会反复转发数据帧。
VLAN
提供网络拓扑结构的功能,将不同端口的划分成不同网段。
作用:
- 从而区分了广播数据的传输范围。
- 减少了网络负载。
- 提高安全性。
以太网
一种最具兼容性喝未来发展性的数据链路
帧格式
以太网帧前端有一个前导码部分,表示帧的开始。
后面就是具体的信数据。最大的数据范围是46个字节到1500个字节。
包含一个帧尾部分。用于数据校验。
IP协议
作用
IP相当于七层模型中的网络层,主要作用就是实现终端节点之间的通信。用于跨越多个数据链路。
IP属于面向无连接型。就是说不需要对目标地址建立连接。简化通信、提速。
相关知识
网络层与数据链路层的关系
数据链路层直通直连的两个设备之间的通信,而网络层负责没有直接连接的两个网络之间进行通信,当然也可以负责相邻的设备通信。
网络层基于数据链路层,可以完成更远的通信。
如果MAC地址属于链路层,IP地址属于网络层。
路由控制
是指将分组数据发送到最终目标地址的功能。决定数据在每个路由节点上的转发方向。
多跳路由就是指路由器或主机在转发IP数据包的时候,只会指定下一个路由器或主机的的地址,而不是把总的路径地址全部指定出来。
路由控制表就是记录当前路由器想要转发将数据转发到指定网络的下一个路由器方向。
IP地址
定义
IPv4由32位正整数来表示。将这样的IP地址分配给每一个参与通信的主机。
组成
IP地址由网络标识和主机标识两部分组成。
一个网络标识可以标识一个网段,一个网段中有很多个主机,每个主机有自己的主机标识。
必须保证每个相互连接的段中的网络标识不重复。IP地址具有唯一性。
路由器根据网络标识将数据帧投到相应的网络段。
分类
IP地址分为四个级别:A、B、C、D。它们根据IP地址中从第一位到第四位的比特列对其网络标识和主机标识进行区分。
- A类:从第1位到第8位就是其网络标识,用十进制标识的话就是0.0.0.0 ~127.0.0.0是A类地址,后24位就是主机标识,所以一个网段可容纳的主机地址就是24位数据这么多。
- B类:前16位就是其网络标识,用十进制标识的话就是128.0.0.1~191.255.0.0,后16位就是主机标识。
- C类:前24位是其网络标识,192.168.0.0~239.255.255.0,后8位是主机标识。
- D类:32位都是网络标识,没有主机标识,常常用于多播。
- 注意:主机标识不能出现全部为0或者1的情况,因为全部为0标识IP地址不可获知,全部为1的主机地址作为广播使用。所以,C类地址每个网络最多只有254个主机地址。
广播和多播
- 广播:将主机地址全部变为1。
- 多播: 使用D类地址。后面的主机标识设置多播范围。
子网掩码
32位地址。
- 作用:表示内部网络,细通过子网网络地址细分处比ABC更小粒度的网段。减少地址资源的浪费。
是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
IP分片与重组
通常一个IP 包很大,不能一下子发出去,需要对其进行分片。
分片大小(MTU)由路由器协商。
IPv4首部
- 版本:标识IP首部的版本号,数值就是4。
- 首部长度:表面IP首部的大小。
- 区分服务:表面服务质量,比如优先级、最低延迟、最大吞吐可靠性什么的。
- 总长度:标识IP首部与数据部分的总字节数。
- 标识:用于分片重组,同一个分片的标识相同,不同分片不同。
- 标志:标识分片相关信息。
- 片偏移:标识被分片的每个分段相对于原始数据的位置 。
- 生存时间:之际指这个包可以中转多少个路由器,多了就会被丢掉。
- 协议:标识这个IP首部隶属哪个协议。
- 首部校验和:用于校验数据是否正确传输。
- 源地址:表示发送端地址。
- 目标地址:表示接收端IP地址。
- 可选项:诊断信息。
- 填充:用于32比特对齐。
- 数据:存储的数据。
IPv6
特点
- 解决地址耗尽的问题。
- 与路由控制表的聚合。
- 不再采用首部校验,提升性能。
- 自动分配IP地址。
- 更加安全。
首部格式
- 版本:为6。
- 通信量类:相当于IP4的服务类型。
- 流标号:用于服务质量控制。
- 有效载荷长度:数据处的有效载荷。
- 下一个首部:相当于协议字段。
- 跳数限制:就是可以中转的路由器个数。
- 源地址。
- 目标地址。
IP协议相关技术
DNS
Domain Name System
- 作用:自动将字符串网址(域名)转化为具体的IP地址。
- 原理:本机解析器为了得到IP地址,会项域名服务器进行查询处理。域名服务器会先在自己的数据库中朝朝,如果有就返回,如果没有,就向上级查询,一直到根域名服务器。解析器和域名服务器会做一些缓存优化。
APR
Address Resolution Protocol
解决地址问题的协议
- 作用:以目标的IP为线索,用来定位下一个应该接受数据包的网络设备的MAC地址。
- 问题:只适用于IPv4,IPv6中可以用ICMPv6代替ARP发送邻居探索消息。
- 原理:ARP是接触ARP请求于响应两种类型的包确定MAC地址的。从一个IP地址发送APR请求了解其MAC地址,目标就将自己的MAC填入APR响应发回来。ARP缓存,减少请求数量。
ICMP
提供问题管理的协议。
- 作用:确认IP包是否成功送达,同之IP包被废弃的原因,改善网络设置。
- 原理:如果有个IP包没有正确送达,ICMP就会负责将原因通知给发送方。
DHCP
Dynamic Host Configuration Protocol
- 作用:给网络设备自动设置IP地址、统一管理分配IP地址。
- 原理:首先架设一台DHCP服务器,然后将需要分配的IP地址放在服务器上,配置其他的信息。客户端发送DCHP请求包的时候,就给它法DCHP提供包。
UDP协议
User Datagram Protocol 缩写
特点
- 不提供复杂的控制机制,利用IP提供面向无连接的通信服务。
- 丢包不重发。
- 没有纠正包的顺序的功能。
- 简单高效。
应用
- 包总量较少的通信。
- 视频音频等多媒体通信。
- 广播通信。
首部格式
- 源端口号。
- 目标端口号。
- 包长度:首部和数据部分的长度之和。
- 校验和。
TCP协议
特点
- 可靠。丢包重发,整理包的次序。
- 只有在建立连接的时候才会发送数据,控制通信流量的浪费
- 各种控制功能。
如何确保可靠性
序列号与ACK确认应答
在TCP中,发送端的数据到达接收端的时候,接收端会回复一个已收到消息的通知,就是ACK确认应答。
如果没有收到确认应答,发送端就会认为数据发送失败,会重新发送。
重发超时确定
如果重发数据还是没有接收到回应,就会等待确认应答在发送,等待的时间成倍数指数函数增长。如果一定重发次数还是没有收到回应,就会关闭连接。
连接建立与断开
三次握手,四次挥手。
连接:
- TCP在数据通信之间会与接收端主机建立连接,发送一个SYN包作为建立连接的请求;
- 接收端回一个针对这个SYN的ACK;
- 发送端在回ACK确认。这样就建立了连接。
断开:
- 发送端发一个FIN请求断开连接;
- 接收端回ACK同意断开;
- 接受端发一个FIN请求断开;
- 发送端回ACK同意断开。
TCP数据分段
- 分段的最大长度MSS是在建立连接的时候就计算确定了的。
- 最优的长度就是的IP包不会被分片的最大长度。
传输性能提升
利用窗口提高发送速度
如果每次都是等一个确认应答再发送下一段的数据,就会很慢,线上只有一个方向的数据。
窗口发送就是解决这个问题。每次发送一个窗口大小的数据,没有等到一个应答还是可以发送后面的数据,然后等待最前面发送的数据的ACK应答。
窗口的大小就是无需等待确认应答而可以发送的数据的最大值。
将窗口滑动到确认应答中的序列号的位置,这样可以顺序地将多个段同时发送以提高性能。这种机制就是滑动窗口。
- 窗口重发机制
如果发送端接收到三次同一个序列号未收到地ACK应答,就会重发那个序列号的数据。
而接收端会将之前的数据缓存,然后补上后来补发的中间没有收到的数据。
流控制
发送端会根据接收端的应答情况,来控制窗口的大小,从而实现发送数据的流量控制。
用一个数据段来实现窗口探测的功能,避免后面的数据因为无法接收端无法接收而浪费了。
是针对接收者的。
拥塞控制
慢启动。
一开始窗口很小,然后逐渐变大,试探链路的载荷,避免通信开始时的连续发包导致网络拥堵。
是针对网络的。
首部格式
- 源端口号:发送端的端口号。
- 目标端口号。
- 序列号:表示发送数据的位置,每次发送就会累加该值。
- 确认应答号:是指下一次应该接收到的数据和序列号。发送端收到这个应答之后就直到这个序号以前的数据被正确接收了。
- 数据偏移:表示数据部分从TCP包的哪个位开始计算。也可以看作首部的大小。
- 控制位:表示这个包的作用,每个位代表不同的功能。
URG=1
当URG字段被置1,表示本数据报的数据部分包含紧急信息,此时紧急指针有效。
紧急数据一定位于当前数据包数据部分的最前面,紧急指针标明了紧急数据的尾部。
如control+c:这个命令要求操作系统立即停止当前进程。此时,这条命令就会存放在数据包数据部分的开头,并由紧急指针标识命令的位置,并URG字段被置1。ACK=1
ACK被置1后确认号字段才有效。
此外,TCP规定,在连接建立后传送的所有报文段都必须把ACK置1。PSH=1
当接收方收到PSH=1的报文后,会立即将数据交付给应用程序,而不会等到缓冲区满后再提交。
一些交互式应用需要这样的功能,降低命令的响应时间。RST=1
当该值为1时,表示当前TCP连接出现严重问题,必须要释放重连。SYN=1
SYN在建立连接时使用。
当SYN=1,ACK=0时,表示当前报文段是一个连接请求报文。
当SYN=1,ACK=1时,表示当前报文段是一个同意建立连接的应答报文。FIN=1
FIN=1表示此报文段是一个释放连接的请求报文。
- 窗口大小:用于在ACK之后TCP包发送的窗口大小。如果窗口值为0,则就是窗口探测。它表示当前接收方的接收窗口的剩余容量,发送方收到该值后会将发送窗口调整成该值的大小。发送窗口的大小又决定了发送速率,所以接收方通过设置该值就可以控制发送放的发送速率。
发送方每收到一个数据报都要调整当前的发送窗口。 - 校验和:校验数据是否正确。
- 紧急指针:在URG位为1的时候才有效,该字段的数值表示本报文段中紧急数据的指针。指的是紧急数据在数据部分末尾段的位置。
- 选项:用于提高TCP的传输性能。最常用的选项字段为MMS:最大报文长度。
路由协议
路由控制定义
将数据向正确的方向转发所进行的处理,就是路由控制。
- 静态路由
事先设置好的路由器和主机中,将路由信息固定的一种方法。 - 动态路由
让路由协议在运行过程中自动地设置路由控制信息地一种方法。
路由算法
距离向量算法
根据距离和方向决定目标网络或者主机位置的一种方法。
- 缺点:不太容易判断每个路由器上的信息是否正确。
链路状态算法
是路由器在了解网络整体连接的基础上生成路由控制表的一种方法。
- 优点:保证信息的正确性。
- 缺点:开销更大。
RIP
是一种距离向量型的路由协议。
- 原理:定期向全网广播,自己的直到的信息,保存其他路由器广播的数据,生成一张路由表。路由表存储对应IP地址的方向及其距离。
OSPF
一种链路状态型路由协议。
- 原理:路由器之间交换网络拓扑信息,然年后在更具这些信息生成路由表。进行区域层次划分,这样就可以控制拓扑数据库的大小。
总结
这本书对于基本的网络传输层入门有着很大的帮助,对于各种协议的描述通俗易懂,但是如果需要深入了解,还是远远不够的。
《图解TCP/IP》笔记的更多相关文章
- HTML+CSS笔记 CSS笔记集合
HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...
- CSS笔记--选择器
CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...
- HTML+CSS笔记 CSS中级 一些小技巧
水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...
- HTML+CSS笔记 CSS中级 颜色&长度值
颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...
- HTML+CSS笔记 CSS中级 缩写入门
盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...
- HTML+CSS笔记 CSS进阶再续
CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...
- HTML+CSS笔记 CSS进阶续集
元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- HTML+CSS笔记 CSS进阶
文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...
- HTML+CSS笔记 CSS入门续集
继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...
- HTML+CSS笔记 CSS入门
简介: </span>年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的<span>脚本解释程序</span>,作为ABC语言的一种继承. & ...
随机推荐
- 判断机器是big-endian、little-endian
联合体union和大小端(big-endian.little-endian):下边示范了一种用途,代表四个含义的四个变量,但是可以用一个int来操作,直接int赋值,无论内存访问(指针大小的整数倍,访 ...
- Vue 组件化开发
组件化开发 基本概念 在最开始的时候,已经大概的聊了聊Vue是单页面开发,用户总是在一个页面上进行操作,看到的不同内容也是由不同组件构成的. 通过用户的操作,Vue将会向用户展示某些组件,也会隐藏某些 ...
- Xshell不能连接Kali系统SSH的解决
修改sshd_config文件 vim /etc/ssh/sshd_config 将#PasswordAuthentication yes的注释去掉 将#PermitRootLogin prohibi ...
- Pinpoint 更改agentid 和 agent name 长度限制(Pinpoint系列二)
本文基于 Pinpoint 2.1.0 版本 本文的内容为了更改 ID 和 Name 长度限制,因为有使用容器或者是服务名称确实比较长,所以根据业务场景,我们需要更改源码来实现这个. 具体更改,参考 ...
- java的常用定时任务的几种方式
Java基本的定时任务,一般有这几种方式:一.Timer 1 public class Timer{ 2 static int index=0; 3 public static void main(S ...
- java开发两年,连这些多线程知识都还没掌握,你凭什么涨薪!
并发与并行 并发:两个或者多个事件在同一时间段发生(交替执行) 并行:两个或者多个事件在同一时刻发生(cpu多核.同时执行) 线程与进程 进程:是一个内存中运行的应用程序,有自己独立的内存空间,一个应 ...
- 使用Camtasia创作抖音卡点视频
空闲的时候刷一刷抖音相信已经成为很多人的日常啦,抖音里面的视频形式多种多样,而其中的卡点视频更是被大家热烈追捧.如果你外出旅行拍摄了很多好看的照片,就很适合用卡点视频的形式展现出来. 如果你想要制作这 ...
- 吉他自学用Guitar Pro好不好?
很多人心中都有一个吉他梦,可苦于没有坚持下来.其实一个人自学吉他过程是非常枯燥的.经常手上被磨得都是茧,但是也不清楚自己弹的到底对不对. 如果不跟着老师练习,那很有可能就走了歪路或者是无法长期坚持.所 ...
- Math对象-JavaScript
Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法.Math 不是一个函数对象. Math 用于 Number 类型. Math 的所有属性与方法都是静态的. 属性 Math.E 欧拉常数 ...
- Vuex form表单处理, 比官网更好的办法
Vuex form表单处理, 比官网更好的办法 问题, 当使用vuex的state作为表单的v-model元素, 虽然简单粗暴, 但这种修改没有经过mutation方法. 在严格模式下会抛出错误 目录 ...