我正在参加创作者训练营第5期, 点击了解活动详情

目录

  • TCP/IP协议是什么

  • 为什么要有TCP/IP网络模型?

  • TCP/IP网络模型分层

    • 运用层
    • 传输层
    • 网络层
    • 数据链路层
    • 为什么TCP/IP网络模型要分层?

TCP/IP协议是什么

从字面上来看,许多人会以为 TCP/IP 是 TCP、IP 这两种协议,实践上TCP/IP 协议族指的是在 IP 协议通讯过程中用到的协议的总称。

为什么要有TCP/IP网络模型?

关于同一台设备的进程间通讯,有许多种方法,比方管道、音讯行列、同享内存、信号等方法,而关于不同设备的进程间通讯,就需求网络通讯。

一开始计算机厂商各自推出各自的网络体系结构和协议,只能用于自己的产品之间通讯,就导致不同厂商之间不兼容,而为了让不同厂商的计算机设备都能够互通,在IETF(Internet Engineering Task Force)的建议下协商出了一系列标准化的网络协议TCP/IP。

TCP/IP网络模型分层

从顶向下能够分为运用层→传输层→网络层→网络接口层。

运用层

咱们日常直接接触到的便是运用层(Application Layer) ,电脑、手机运用的运用都是在运用层完结,但若是不同设备的运用之间需求通讯的时分,就需求将数据传给下一层,也便是传输层。

运用层专心于给用户供给运用功用,如HTTP、FTP、Telnet、DNS、SMTP等。

运用层不需求关怀数据是怎样传输的。就像咱们寄快递时也不需求关怀快递是怎样运输到目的地的。

运用层是作业于操作系统中的用户态,而传输层及以下是作业在内核态。

运转在用户态下的程序不能直接拜访操作系统内核数据结构和程序。当咱们在系统中执行一个程序时,大部分时刻是运转在用户态下的,在其需求操作系统帮助完结某些它没有权利和才能完结的作业时就会切换到内核态(比方操作硬件)。

定论:假如不涉及与其他设备通讯就不需求内核态,也便是不需求从运用层传到传输层及之后的层。在HTTP协议中,衔接便是利用内核树立的。

传输层

传输层(Transport Layer) 是为运用供给网络支持的。

传输层有两个协议,TCPUDP

TCP

TCP全称叫 传输操控协议(Transmission Control Protocol),大部分运用运用的是TCP传输层协议,由于运用的运用层运用的是HTTP协议,而HTTP协议是基于传输层的TCP协议。TCP相比照UDP多了许多特性,如流量操控、超时重传、拥塞操控等。是为了确保数据包能够可靠的从一方传输给另一方。

运用需求传输的数据有或许很大,假如直接传输的话欠好操控(比方很大的文件假如只传一个包万一网卡就得重传,没法暂停续传),因而当传输层的数据包巨细超越 MSS(TCP 最大报文段长度) ,就要将数据包分块,这样即便中途有一个分块丢失或损坏了,只需求从头发送这一个分块,而不用从头发送整个数据包。在 TCP 协议中,咱们把每个分块称为一个 TCP 段TCP Segment)。

TCP/IP网络模型简析

UDP

UDP相对来说比较简单粗暴,只担任发送到对应运用数据包,不确保包是否能送到对方,可是它的实时性更好,传输效率也比TCP要高。并且UDP也能够完结可靠传输,只需把TCP的特性在运用层完结就能够,这样全体的数据传输仍是可靠的。

为什么TCP要有衔接

衔接能够确保通讯两边的收发才能,然后能够确保数据的可靠性,由于IP协议是无衔接的,而HTTP之所以能够确保数据准确是在TCP有衔接的基础上确保的。而UDP是继承IP协议的无衔接,因而假如不在运用层上完结衔接和数据可靠性则整个协议就无法确保数据可靠性。

上述所说的TCP树立衔接不是说服务器和客户端真的有根网线连一块,而是一种虚拟的,这就和三次握手和四次挥手相关了。

运用层和传输层之间的关系

在客户端要和服务端通讯时,运用层的数据包会送到传输层。而在接纳服务端数据时,传输层会将对应运用的数据包发到对应运用的端口。

假如你在电脑上别离在用QQ和微信谈天,当你的电脑接受到一个数据包的时分,该怎样知道他到底是QQ的音讯仍是微信的音讯呢?这就需求用传输层报文中的TCP/UDP头中的端口号(Destination Port)来确认,传输层用端口号来标记不同的运用程序。

TCP/IP网络模型简析

比方80端口通常是web服务器用,22端口是长途登录服务器,而浏览器中每一个Tab页则是独立的进程,随机分配的端口号。

网络层

网络层是担任将数据从一个设备传输到另一个设备,而传输层是担任将设备上的数据传输到设备上的运用。方针地址能够是多个网络经过路由器衔接而成的某一个地址。因而这一层首要担任寻址和路由挑选。

网络层最常运用的是IP协议(Internet Protocol),IP协议会将从传输层传出的报文作为数据部分,再加上IP报头组装成IP报文。这一层的首要作用是给数据包加上源地址和方针地址,将数据包传送到方针地址

已然网络层的目的是将数据包传送到方针地址,那么IP协议是怎样做到的呢?

经过IP协议的两大功用:寻址路由

寻址,匹配到相同的网络号(子网),然后去对应子网下找对应的主机。

路由,在实践场景中,两台设备并不是由一根网线衔接起来的,而是经过许多网关、路由器、交换机等许多网络设备衔接起来,是一个网状的结构,从一个点到另一个点,就会有许多途径,因而当数据包抵达途径节点时,就需求路由算法来决议下一步走哪条途径。

和TCP报文类似,IP报文在大于MSS时也会分片

在数据包抵达网络层,会和IP头(源地址、方针地址)组装成IP报文,假如IP报文巨细超越MTU(一般为1500字节),就会再次分片,得到一个即将发送到网络的IP报文。

TCP/IP网络模型简析

上图的意思便是第一次传输层接受到的运用层数据包内容超越一个MSS(TCP 最大报文段长度),因而在传输层别离增加TCP头分为了两个TCP段进行发送,而抵达网络层时又都需求增加IP头。而假如此时整个数据包巨细若超越MTU(一般为1500字节)就又需求分为两个带IP的数据包到下一层。

IP地址是什么?

IP 地址是一个网卡在网络国际的通讯地址,相当于咱们现实国际的门牌号码。

10.100.122.2 便是一个 IPv4 地址。这个地址被点分隔为四个部分,每个部分 8 个 bit(8位2进制),所以 IP 地址总共是 32 位,也便是说IP地址最多有2的32次方个,42亿多个,但没想到仍是不可用了,因而呈现了IPv6地址,如fe80::f816:3eff:fec7:7975/64,IPv6有128位,总数2^128次方,现在看来是够用了。

IP分类

IPv4地址还被分为了5类,别离是A,B,C,D,E这五种。

TCP/IP网络模型简析

关于常用的A、B、 C 类首要分两部分,前面是网络号,后边是主机号。能够以为网络号是小区名,而主机号是详细的门牌名。比方A小区1栋1单元201和B小区1栋1单元201。

而不同的小区能够容纳的住户也是不同数量的,比方A类小区下依据主机号24位则能够有2^24次方也便是16777214户,依次类推。

TCP/IP网络模型简析

可是依照这样分配则会形成不可用或是糟蹋的情况,比方C类地址只需254,关于网吧或许都不可用,而B类下有6万多,非大型企业压根也用不完,会导致糟蹋。

无类型域间选路(CIDR)

因而除了上述的IP分类,有了一个折中的方法叫无类型域间选路,简称 CIDR(Classless Inter-Domain Routing)。CIDR的做法是将32位的IP地址一分为二,前面是网络号,后边是主机号

  • 网络号,担任标识该 IP 地址是属于哪个「子网」的;
  • 主机号,担任标识同一「子网」下的不同主机;

比方10.100.122.2/24,斜杠后的24代表的意思便是当前网络地址的32位中,前24位是网络号,后8位是主机号。

怎样区分网络号和主机号?需求IP地址合作子网掩码算出网络号主机号。其实上述中10.100.122.2 /24中的24就表示子网掩码是255.255.255.0(3个255代表的实践上便是前24个二进制位都是1,8个2进制1刚好是255),代表相同的意思。

将子网掩码和IP地址进行逻辑与(AND)运算能够得到网络号

TCP/IP网络模型简析

将子网掩码255.255.255.0取反后与IP地址进行按位与运算,则能够得到主机号也便是2。

随同CIDR存在的一个是广播地址,10.100.122.255。假如发送到这个地址,则一切10.100.122网络里边的机器都能够收到。网络号能够想成是一个由一些主机组成的大群,广播地址能够以为是直接往大群里发音讯的地址

公有 IP 地址和私有 IP 地址

CIDR中还存在公有IP地址和私有IP地址。

TCP/IP网络模型简析

公有IP地址能够以为是小区名,私有IP地址能够以为是门牌号,A小区能够有1栋1单元201,B小区也同样能够有1栋1单元201。

常见的公有IP地址便是那些你在互联网上直接拜访到的网站服务器,都有一个公有IP地址以供拜访。

一般办公室、家里的IP地址都是私有的地址,这些地址允许组织内部的IT人员自己办理、分配。常见的私有地址是家里Wi-Fi下的IP地址,一般是192.168.0.x,一般/24就够了,对应的便是254个能够分配的IP地址。有时也有/16的CIDR,这两种是最常见的。

能够看出192.168.0是网络号,后边是主机号,整个网络中第一个地址192.168.0.1,往往是你这个私有网络的出口地址,比方衔接WIFI,WIFI路由器的地址便是192.168.0.1(通常咱们办理路由器比方改密码也是登录这个IP)。

MAC地址

在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为 MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。MAC 地址是一个很简单让人“误解”的地址。

由于 MAC 地址声称大局仅有,不会有两个网卡有相同的 MAC 地址,并且网卡自生产出来,就带着这个地址。许多人看到这里就会想,已然这样,整个互联网的通讯,悉数用 MAC 地址好了,只需知道了对方的 MAC 地址,就能够把信息传过去。这样当然是不可的。 一个网络包要从一个当地传到另一个当地,除了要有确认的地址,还需求有定位功用。 而有门牌号码属性的 IP 地址,才是有长途定位功用的。

例如,你是一个警察,要抓法外狂徒张三,现在只知道他的身份证号,张三同名的人许多,总不能满我国翻人身份证看是不是这个法外狂徒,所以你得依据情报之类的线索先确认他在哪个区域,然后再依据监控啥的抓捕。MAC 地址就像是身份证,是一个仅有的标识。它的仅有性设计是为了组网的时分,不同的网卡放在一个网络里边的时分,能够不用担心冲突。

从硬件视点,确保不同的网卡有不同的标识。MAC 地址是有必定定位功用的,只不过规模十分有限。你能够依据 IP 地址,找到杭州市网商路 599 号 B 楼 6 层,可是依然找不到我,你就能够靠吼了,大声喊身份证 XXXX 的是哪位?我听到了,我就会站起来说,是我啊。可是假如你在上海,到处喊身份证 XXXX 的是哪位,我不在现场,当然不会回答,由于我在杭州不在上海。

所以,MAC 地址的通讯规模比较小,限制在一个子网里边。例如,从 192.168.0.2/24 拜访 192.168.0.3/24 是能够用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC 地址就不可了,需求 IP 地址起作用了。

数据链路层

通讯传输实践上是经过物理的传输介质完结的,数据链路层的作用是在这些经过传输介质互连的设备之间进行数据处理。

将数据中的0、1转换位电压和脉冲光传输经过物理的传输介质在彼此直连的设备之间运用MAC地址进行传输。MAC地址,也能够称为物理地址或硬件地址,目的是为了辨认衔接到同一个传输介质上的设备。