左侧:TCP/IP五层或TCP/IP四层
右侧:从不同维度分为OSI七层
每层运行的常见设备如下图
1、物理层
物理层,物理层干啥的,就是电脑之间要联网,一般咋弄?类似于说,你有台电脑,现在要联网,咋联?以前N年前,大家记不记得都是在电脑上插根线是吧,然后才能上网,结果现在就是联个wifi就行了,还有中国美国之前联网靠的是海底的光缆。所以物理层就指的这个,就是怎么把各个电脑给联结起来,形成一个网络,这就是物理层的含义,物理层负责传输0和1的电路信号。学过一些计算机的同学,计算机的最最底层,就是0/1,电信号。
2、数据链路层
由于单纯的电平信号“0”和“1”没有任何意义,在实际应用中,我们会将电平信号进分组处理,多少位一组、每组什么意思,这样数据才有具体的含义。数据链路层的功能就是定义电平信号的分组方式
2.1、以太网协议
数据链路层使用以太网协议进行数据传输,基于MAC地址的广播方式实现数据传输,只能在局域网内广播。早期各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议Ethernet
2.2、Ethernet
以太网由一组电平信号构成一个数据包,叫作“帧”,每一数据帧由报头Head和数Data两部分组成Head:固定18字节,其中发送者/源地址6字节,接收者/目标地址6字节,数据类型6字节。Data:最短46字节,最长1500字节。数据包的具体内容格式为:Head长度+Data长度=最短64字节,最长1518字节
2.3、MAC地址
Head中包含的源地址和目标地址的由来:Ethernet规定接入Internet的设备必须配有网卡,发送端和接收端的地址便是指网卡的地址,即MAC地址。MAC地址:每块网卡出厂时都被印上一个世界唯一MAC地址,它是一个长度为48位的二进制数,通常用12位十六进制数表示(前6位是厂商编号,后6位是流水线号)
2.4、Broadcast广播
有了MAC地址,同一网络内的两台主机就可以通信了(一台主机通过ARP协议获取另外一台主机的MAC地址),下面是以太网通信数据帧的详细示意图。
PC1按照固定协议格式以广播的方式发送以太网包给PC4,然而,PC2、PC3、PC5都会收到PC1发来的数据包,拆开后如果发现目标MAC地址不是自己就会丢弃,如果是自己就响应
3、网络层
如果所有的通信都采用以太网的广播方式,那么一台机器发送的数据包全世界都会收到,这就不仅仅是效率低的问题了,这会是一种灾难。全世界的大网络由一个个小的彼此隔离的局域网组成,以太网包只能在一个局域网内发送,一个局域网是一个广播域,跨广播域通信只能通过路由转发。由此得出结论:必须找出一种方法来区分哪些计算机属于同一广播域。如果是就采用广播的方式发送,如果不是就采用路由的方式发送(向不同广播域/子网分发数据包),MAC地址是无法区分的,网络层就是用来解决这一问题的。
3.1、IP
规定网络地址的协议叫作IP(Internet Protocol,网际互联协议),它定义的地址称为IP地址。广泛采用v4版本即IPv4,规定网络地址由32位二进制数表示。一个IP地址通常写成四段十进制数,例如172.16.10.1,其取值范围为:0.0.0.0255.255.255.255
3.2、子网掩码
所谓“子网掩码”,就是表示子网络特征的一个参数。根据“子网掩码”就能判断任意两个IP地址是否处于同一个子网络。方法是将两个IP地址与子网掩码分别进行&运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果相同,就表明它们在同一个子网络中,否则就不在
3.3、IP数据包
IP数据包也分为Head和Data两部分,无须为IP数据包定义单独的栏位,直接放入以太网包的Data部分即可。Head(IP头部):长度为20~60字节。Data(IP数据):最长为65515字节。而以太网数据包的Data部分,最长只有1500字节。因此,如果IP数据包超过1500字节,它就需要分割成几个以太网数据包,分开发送。
3.4、ARP
计算机通信方式是广播的方式。所有上层的数据包到最后都要封装到以太网头,然后通过以太网协议发送。在谈及以太网协议的时候,我们已经了解到,通信基于MAC地址的广播方式实现的,计算机在发送数据包时,获取自身的MAC地址是容易的,获取目标主机的MAC地址,需要通过ARP(Address Resolution Protocol,地址解析协议)来实现。
11000000 10101000 10011011 10010000
192.168.155.144
11111111 11111111 11111100 00000000
255.255.252.0
11000000 10101000 10011000 0000000
11000000 10101000 10011011 10010001
192.168.155.145
11111111 11111111 11111100 00000000
255.255.252.0
11000000 10101000 10011000 0000000
11000000 10101000 10011011 10010010
192.168.155.146
11111111 11111111 11111100 00000000
255.255.252.0
11000000 10101000 10011000 00000000
11000000 10101000 10011010 10010000
192.168.154.144
11111111 11111111 11111100 00000000
255.255.252.0
11000000 10101000 10011000 00000000
255.255.252.0
4、传输层
网络层的IP地址帮我们区分子网,以太网层的MAC地址帮我们找到主机那么我们通过IP地址和MAC地址找到了一台特定的主机,如何标识这台主机上的应用程序?端口就是应用程序与网卡关联的编号。那么传输层就是用来建立端口到端口的通信机制的
4.1、TCP
TCP(Transmission Control Protocol,传输控制协议)是一种可靠传输协议,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割|以太网头部|IP头部|TCP头部|数据|
4.2、UDP
UDP(User Datagram Protocol,用户数据报协议)是一种不可靠传输协议,“报头”部分总共有8字节,总长度不超过65535字节,正好放进一个IP数据包|以太网头部|IP头部|UTP头部|数据|
4.3、TCP
报文结构TCP报文是TCP层传输的数据单元,也叫作报文段
下面对报文内容做详细介绍。
(1)端口号:用来标识同一台计算机的不同应用进程。
● 源端口:源端口和IP地址的作用是标识报文的返回地址。
● 目的端口:目的端口指明接收方计算机上的应用程序接口。
TCP报头中的源端口号和目的端口号同IP数据包中的源IP地址和目的IP地址唯一确定一条TCP连接。
端口从0-65535
常见的端口有HTTP(HyperText Transfer Protocol)超文本传送协
议:80
FTP(File Transfer Protocol)文件传输协议 :21
SMTP(Simple Mail Transfer Protocol)简单邮件传送协
议:25
DNS(Domain Name System)域名系统:53
(2)序号和确认号:TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节都有一个序号。例如:一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。因为一个请求会被拆分成多个数据包,所以TCP需要序号来分段传输如果当前序号为300,包含100个字节,那么下一个报文
的序号就是400,以此保证TCP传输的有序性==确认号 ,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误地收到。确认号只有当ACK标志为1时才有效。==比如建立连接时,SYN报文的ACK标志为0。
(3)数据偏移/头部长度:4位。由于头部可能含有可选项内容,TCP报头的长度是不确定的,报头不包含任何任选属性则长度为20字节,4位头部长度属性所能表示的最大值为1111,转化成十进制为15,15×32/8=60,故报头最大长度为60字节。头部长度也叫数据偏移,是因为头部长度实际上指示了数据区在报文段中的起始偏移值。
(4)保留:为将来定义新的用途保留,现在一般设置为0。
(5)标志位:URG、ACK、PSH、RST、SYN、FIN,共6
个,每一个标志位都表示一个控制功能,具体含义如下表所
示。
(6)窗口:滑动窗口大小,用来告知发送端接收端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小是一个16位属性,因而窗口大小最大为65535。
(7)校验和:奇偶校验,此校验和针对整个TCP报文段,包括TCP头部和TCP数据,以16位属性进行计算所得。由发送端计算和存储,并由接收端进行验证。
(8)紧急指针:只有当URG标志为1时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号属性中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
(9)选项和填充:最常见的可选属性是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接收的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个属性中加入额外的零,以保证TCP头部长度是32位的整数倍。
(10)数据部分:TCP报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有TCP头部。如果一方没有数据要发送,也使用没有任何数据的头部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。
4.4、TCP交互流程
A : 你好,我是A 请求
B: 你好A,我是B 应答
A:你好B, 应答之应答
5、应用层
电脑 1走的tcp协议发送一段东西过来,发送到电脑2023端口
Get http://localhost:8080 http/1.1
key:value1
key:value2
http: smtp mq
5.1、DNS协议
DNS是英文Domain Name System(域名系统)的缩写,用来把便于人们使用的机器名字转换为IP地址。现在顶级域名TLD(Totel Lead Domination)分为三大类:国家顶级域名nTLD、通用顶级域名gTLD和基础结构域名。域名服务器分为四种类型:根域名服务器、顶级域名服务器、本地域名服务器和权限域名服务器。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
5.2、HTTP
HTTP(HyperText Transfer Protocol,超文本传输协议)是面向事务的应用层协议。它是互联网上能够可靠地交换信息的重要基础。HTTP使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。
5.3、FTP
FTP(File Transfer Protocol,文件传输协议)是互联网上使用最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。FTP基于TCP工作。
5.4、SMTP
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP通信的三个阶段:建立连接、邮件传送和连接释放。
5.5、POP3
POP3(Post Office Protocol 3,邮件读取协议)通常被用来接收电子邮件。
5.6、Telnet协议
Telnet协议是一个简单的远程终端协议,也是互联网的正式标准,又称为终端仿真协议。