Skip to content

图解TCP/IP

Chap 1

  • 协议:约定俗成的规矩。使得不同的厂商不同的CPU组成的计算机都可以通讯。

各行各业的产品标准化这一点是我从未思考过的…觉得好神奇!就连插头插座,音频录音带这些也需要遵循某种约定俗成的标准呀!

  • 协议的分层:

上下层进行交互时所遵循的约定叫接口,同一层的叫协议。整个模型叫作通信模型。

类似简单的例子 是打电话时用户所在的语言层和通信设备层,输入和输出都要按同样的方式解析呀

image-20230221135735344

  • 所以说遵循协议其实是遵循其中的内容。

  • 应用层:eg.主机A输入电子邮件内容并点击发送后的那一刻。应用层会添加首部“收信人”和内容等。主机B收到后同样会分析首部和正文,进行存储或错误返回。key:邮件存储。

  • 表示层:将设备特有的可显示的数据格式转化为网络标准传输格式 反之亦然。首部信息:识别编码格式。

  • 会话层:管理如何建立连接,确立建立连接和断开连接的时机。eg. 会话层会想,我是开一个连接发一封邮件就关上连接呢,还是一个连接一次性都发完呢,还是同时开好几个连接呢。首部信息:记录数据传送顺序。

    ----接下来就都是数据传输部分啦-----

  • 传输层:是会话层的手下!听命于会话层的安排,执行两个节点之间的数据连接或断开连接。主机B的传输层也会反馈是否全部收到,否则A还会重发呢。

  • 网络层:寻址与路由选择。八脚蜘蛛小boss,确立路线,负责将整个数据发送给最终目标。

  • 数据链路层:拿着接力棒的小蚂蚁们,只发送自己负责区域(分段)内的数据。

  • 物理层:负责0,1与电压 光的闪灭之间的互换。首部信息:MAC地址

  • 传输方式的分类

  • 面向有连接:理解成打电话
  • 面向无连接:理解成寄信,不需要确认收信人的地址是否真的存在就可以寄出去了

  • 分组交换技术:

如果不做任何处理的话,一条线上只能由跑一只蚂蚁,所以每个计算机通信时会独占一条线,还会堵塞住等待通信的计算机。所以发明了被分割成的数据包,带着自己目的地的首部,所有计算机的通信就可以混在一起发送啦。

  • 也可以通过目标地址的个数对通信进行分类:单播(电话),广播(电视),多播(电视会议), 任播(如DNS解析服务器)

  • 地址

  • 唯一性。哪怕是广播的方式,收信方也会是“三年一班”这种类名。

  • 层次性。真的和电话很像诶!电话也有区号写信也有省市区方便定位把,IP地址就这么用的。MAC地址由设备制造厂商针对每块网卡分别进行指定,却没有层次性和规律可循,所以它虽然真正负责最终通信的地址,但是实际寻址过程中IP地址却必不可少。

  • 数据发送:主机A(refer to 路由控制表,将发往主机B的数据转发给路由器1) -> 交换机(refer to自己的地址转发表,路由器1在表中,所以可以转发)---路由器们接力转发---> 交换机(refer to自己的地址转发表,主机B在其中,所以转发给B)

  • 网络的构成要素

  • 通信媒介与数据链路。如图:

    image-20230221135819661

    还有好几种…传输速率指的并不是单位数据流动的速度(这是恒定的,因为光和电流的传输速度是恒定的),而是单位时间内传输的数据量。传输速率又称带宽bandwidth。

  • 网卡。 NIC 好多笔记本都内置了 带有MAC物理地址。ipconfig/all > 物理地址里就可以看见~

  • 中继器。连接相同的通信媒介与相同速度的网络,起到电信号/光信号波形放大的作用。于物理层上延长网络。

  • 网桥/2层交换机。根据数据帧(意同分组数据,但是在数据链路层称为帧)的内容转发数据给相邻的网络,可以储存数据帧并重新生成全新的帧,所以可以连接传输速率不同的数据链路,不限制连接网断的个数,还可以控制数据,丢弃错误的数据帧,还可以保存哪些网段地址包含哪些MAC地址设备的信息,下次只发给对的网段。作用于数据链路层。现在常用的交换集线器Hub,连接电缆的每个端口都能提供类似网桥的功能。

  • 路由器/3层交换机。连接两个网络,并对分组报文进行转发。网桥根据物理地址(MAC)进行处理,而路由器根据IP地址进行处理,可以连接不同的数据链路。位于网络层

  • 4~7层交换机。负责处理从传输层及以上的数据。比如带宽控制(优先处理语音,放缓处理邮件等),广域网加速器,特殊应用加速器,和防火墙等。

  • 计算机生成了可选文字: 例 如 , 对 于 并 发 访 问 量 非 常 大 的 一 个 企 业 级 Web 站 点 ' , 使 用 一 台 服 务 器 不  足 以 满 足 前 端 的 访 同 需 求 , 这 时 通 常 会 架 设 多 台 服 务 器 来 分 担 。 这 些 服 务 器 前 端  访 问 的 人 口 地 址 通 常 只 有 一 个 ( 企 业 为 了 使 用 者 的 方 便 , 只 会 向 最 终 用 户 开 放 一  一 的 访 问 URL)6 为 了 能 通 过 同 一 个 URL 将 前 端 访 问 分 发 到 后 台 多 个 服 务 器  , 可 以 在 这 些 服 务 器 的 前 端 加 一 个 负 载 均 衡 器 。 这 种 负 载 均 衡 器 就 是 4 -7 层 交

感觉就好像反向代理的作用诶。

  • 网关。同样负责处理从传输层及以上的数据。可以对数据进行转换,比如在表示层和应用层中间设立网关,对手机邮件或计算机邮件进行转换(它们协议不同),这样手机也可以和计算机发邮件了。代理服务器Proxy server也是网关的一种,称为应用网关,譬如防火墙。
  • image-20230221135841993

这里服务器和客户端的解释很一语中的!~

  • 现代网络实态

  • 互联网络光纤们 其实也相当于看不见的高速公路呢

  • 移动通信。手机与基站的关系。

  • 4G下,声音也被当作IP数据包进行传输,所以整个网络上都应用了TCP/IP协议了!~

  • 托管主机的服务。以前,访问由个人或企业自行管理的服务器的情况居多,现在利用数据中心发布信息的情况日益增多。

TCP/IP协议群

  • 其实包括了超多内容

应用协议:HTTP, FTP, TELNET等

传输协议:TCP, UDP

路由控制协议:RIP, OSPF, BGP

网际协议:IP, ICMP, ARP

  • 分层模型

image-20230221140224629

OSI参考协议注重:通信协议必要的功能是什么

TCP/IP:在计算机上实现协议应该开发哪种程序

互联网层:使用ip协议,which 基于IP地址转发分包数据

  • IP: 不具有重发机制。所以如果分组数据包中途丢掉了 也不会重发。

  • ICMP: 收到接收端发送的异常通知时,会重发

  • ARP: 从IP地址中解析出MAC地址

传输层:很重要的一点是让计算机识别出是哪个程序在和哪个程序通信,那么识别这些程序的正是端口号。

  • TCP: 面向有连接的传输层协议。可以保证两端通信主机之间的通信可达,还可以正确处理丢包或者传输顺序乱掉的这些情况。缺点是①建立或断开连接时需要至少7次的收包发包,导致网络流量的浪费 ②协议中规范很多,不利于视频会议等场合使用。

  • UDP: 面向无连接的传输层协议。不会关注对端是否在线,是否有收到数据包等。

应用层(会话层以上分层)

  • HTTP: HyperText Transfer Protocol 浏览器与服务端通信所用的协议。属于OSI应用层的协议。

  • HTML: 属于OSI表示层的协议。

  • SMTP: Simple Mail Transfer Protocol 发送电子邮件的协议,现在电子邮件的格式还由MIME拓展了。MIME也属于OSI的表示层。

  • FTP: File Transfer Protocol。传输过程可选择二进制方式or文本方式,后者在不同系统间进行传输时会自动修改换行符, which属于OSI的显示层。传输时还会建立两个TCP连接,分别是发出请求时要用到的控制连接与实际传输数据时要用到的数据连接,这两者连接的会话管理属于OSI的会话层。

  • TELNET和SSH(Secure SHell): 用于远程登录。

  • SNMP(应用层协议): 网络管理。被管理的主机网桥路由器等称为SNMP代理,进行管理的那一段称为管理器。代理端就保存着网络接口的信息,通信数据量异常数据量和温度等信息,这些信息可以通过MIB(表示层协议)访问到。

通信实例

数据包首部:

image-20230221140252945

首部有好多信息呀。比如如何读取数据 如何校验 上一层协议的域是什么内容(是指包括之前所有首部们的全部的data!)

发送邮件:

①应用程序处理:点击发送的一刻,会话层指挥建立TCP连接。

②TCP模块的处理:首部包括源端口号和目标端口号(用以识别发送主机和接收主机的应用),序号(表明包中从哪里开始是数据)以及校验和(以判断数据是否被损坏)。

③IP模块的处理:首部包括发送端IP和接收端IP。还附带有识别上一层是TCP还是UDP的信息。IP包生成后参考路由控制表被发送至对应路由器。

④网络接口(以太网驱动)的处理:首部包括发送端及接收端的MAC地址

接受邮件:

①网络接口(以太网驱动)的处理:首先从首部找到MAC地址确认收件方是否是自己,不是则丢弃。再找到上一层包的类型,如果是IP包则将数据传给处理IP的子程序,ARP的就传给处理ARP的协议。

②IP模块的处理:类似上一步,先确认IP地址是否是自己,然后再确认上一层包是TCP的还是UDP的分别传递。注意 对于有路由器的情况下,接收端地址往往不是自己的地址,就需要借助路由控制表,转发至应送达的主机或路由器

③TCP模块的处理:先通过校验和确认数据是否被破坏,然后检查是否在按照序号接收数据。最后检查端口号,确定具体应用程序。数据接受完后,会给发送端发送一个“确认收到”,再将数据发给由端口号识别的应用。

数据链路

不同类型:包括以太网 FDDI ATM 无线LAN 蓝牙等

MAC地址

用于识别数据链路中互联的节点

MAC地址内有厂商识别码和厂商内识别码 所以不会重复

以太网

原来以太是介质的意思 在量子力学出现以前 人们认为空气中充满了以太…

豆知识><

然后还讲到以太网内传递的帧

有帧头帧主体还有最后的FCS来检测数据是否被损坏

无线通信

image-20230221140414376

  • PPP点对点

属于纯粹的数据链路层 还需物理层的支持

  • IP协议

位于网络层 网络层可以跨越不同的数据链路

主机:配有IP地址但不进行路由控制的地方

路由器:既配有IP地址又进行路由控制

节点:主机和路由器统称

  • 网络层与数据链路层的关系

后者提供直连两个设备之间的通信功能

前者负责在没有直连的两个网络之间进行传输

呀!原来可以想成旅行社和中途要坐的火车呀汽车呀的关系

IP 协议

IP面向无连接 TCP面向有连接

IP负责将数据发给目标主机 TCP负责保证对端主机收到数据

IP地址:8位一组(我们看起来就转换为十进制了已经) 分成四组 以.隔开

2^8*4 即 2^32=43亿种!

ip地址 = 网络标识(网络地址)+主机标识(主机地址)

网络标识必须保证相互连接的每个段的地址不相重复

image-20230221140530346

A类ip: xxx.xxx.xxx.xxx/8 所以主机ip可有2^24 - 2个不同地址(因为主机地址不可全部为0或全为1)

B类ip: xxx.xxx.xxx.xxx/16

C类: xxx.xxx.xxx.xxx/24

D类: xxx.xxx.xxx.xxx/32 即没有主机标识 常用于多播

image-20230221140554516

比如A类的127 = 2^7 - 1

一共8位 那么一共就有2^8-1=255种数字了 即0到11111111

但是按类分会出现全局ip地址不够用的问题 也不大方便 所以出现了不定长度的掩码

掩码对应IP地址网络标志的部分为1(需连续)对应主机标识的为0

全局地址与私有地址

专用网络是指遵守RFC 1918(IPV4)和RFC 4193(IPV6)规范,使用专用IP地址空间的网络。私有IP无法直接连接互联网,需要使用网络地址转换(Network Address Translator,NAT)或者代理服务器 (proxy server)来实现。与公网IP相比,私有IP是免费的,同时节省了IP地址资源,适合在局域网使用。

image-20230221140640429

路由控制

image-20230221140700427

没找到匹配路径的会被转发到默认路由(相当于“其他” 因为不必要在路由表中把所有无关下一站的网络地址展示出来 否则会需要更多内存和cpu 查找地址时也更耗时间)

ps: 环回地址。127.0.0.1和localhost 此时数据包不会流向网络

路由聚合

其实就是不同的ip可以同属于掩码变短后的ip地址

image-20230221140717743

IP分割处理

MTU:数据链路的最大传输单元 which不尽相同 而IP属于数据链路上一层,抽象化了底层的数据链路。IP的MTU是65535字节,而以太网的默认MTU是1500字节 所以无法在一个帧当中发送完成的IP数据都需要分片。路由器进行分片 目标主机重组。还有一种路径MTU 发送主机会发现整条链路上(注意 包括了MTU不同的不同链路们)的common-max MTU。这样无需再被中途路由器分片了。

IPv6

长度为128位 所以一般用十六进制表示 16比特一组

image-20230221140738014

首部略过了!>.<

IP协议及其相关技术

  • DNS

  • ARP: 根据目标IP地址查询下一跳路由器或主机的MAC地址

主机会通过广播发送ARP请求包 然后对应IP的节点就会把自己的MAC地址发回。

由于是广播很费流量 所以需要一定时间的MAC列表缓存。

  • RARP:由MAC查IP

  • ICMP:用来发现网络是否有错误并且进行报错的!

比如超时或者目标不可达这种!

ping就是利用的ICMP回送消息 可以接收对端主机发回来的回送应答消息

  • DHCP: 自动分配ip地址

  • NAT:用于在本地网络中使用私有ip地址 在连接互联网时使用全局ip地址

  • IP隧道:为解决两段IPv6网络中夹着一段IPv4网络这样子的问题

也就是再加一个IPv4/v6的首部

  • IP任播:就像拨110那样!为很多服务器配同一个ip地址 并与最近的服务器进行通信的方式~最典型的就是dns根域名服务器

image-20230221151430370

应用协议

远程登录:TELNET+SSH

文件传输:FTP(使用两条TCP 一条用来控制设置一条用来传数据)

邮件:SMTP好像就很复杂…还有POP协议用来接受邮件 POP服务器一直处于插电连接的状态的 还有IMAP协议也是在接收端用的

网络安全

防火墙

如何实现只内网可访问外网 外网访问不到内网?防火墙可通过监控TCP包首部的SYN和ACK标识位,当SYN为1ACK为0时属于互联网发过来的包,所以会丢掉。所以只能从内网向外建立连接。

image-20230221151518963

再次温习对称加密与非对称加密(又称公钥加密)

VPN:虚拟私有网

利用IPsec技术 在ip首部后追加另两个首部(包含解密信息)并对ip数据进行加密

image-20230221151536706

用CA证书确认公钥是否正确