Skip to content

Latest commit

 

History

History
55 lines (36 loc) · 6.67 KB

《图解HTTP》学习笔记之协议.md

File metadata and controls

55 lines (36 loc) · 6.67 KB

《图解HTTP》学习笔记

第一章:了解Web及网络基础

TCP/IP协议

协议:计算机之间通过网络实现通信时,事先达成的一种约定;这种约定使不同厂商生产的设备,不同CPU,不同操作系统组成的计算机之间,只要遵循相同的协议,就可以实现通信。(两台计算机之间必须能够支持相同的协议,并遵循相同的协议进行处理,才可以实现相互通信。)  

物理介质:物理介质就是把电脑连接起来的物理手段,常见的有光纤,双绞线,无线电波,他决定了电信号(0,1)的传输方式。物理介质的不同决定了电信号的传输带宽,速率,传输距离,以及抗干扰性。协议之间的通信最终都要0和1的电信号,通过物理介质进行传输才能到达对方的电脑  

整体概念

TCP/IP协议栈分为四层,包括应用层,传输层,网络层,链路层。

当用户通过http发起一个请求时,应用层,传输层,网络层,链路层的相关协议依次对该请求进行包装并协带对应的首部,最终在链路层生成以太网数据包,数据包通过物理介质传输给对方主机,对方接收到数据包后,再一层一层地采用对应的协议进行拆包,最后把应用层数据交给应用程序去处理。

具体分工

1、链路层(以太网协议)

网络通信就是把数据通过物理介质传送给对方,一组电信号就是一个数据包,一个数据包被称为一帧。一个数据帧包括首部,数据,尾部三部分。

首部包含目标MAC地址,源MAC地址和类型。数据最长为1500字节,如果需要传输的数据很长,就需要分割成多帧进行发送。尾部固定4字节,用于确定数据包传输过程中是否损坏。   以太网协议规定,接入网络的设备必须安装网络适配器(网卡),数据包就是从一个网卡传送到另一个网卡。网卡地址也就是MAC地址,是网卡的身份表示,全球唯一。   有了MAC地址,以太网通过广播的形式,把数据包发送给子网内所有的主机,子网内的每一台主机接收到数据包后,会读取数据包里的MAC地址,和自己的MAC地址进行对比,如果相同就做下一步处理,不相同就丢弃这个包。

链路层的主要工作就是对电信号进行分组形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方

2、网络层(IP协议,ARP协议,路由协议)

解决三个问题(发送者如何知道接受者的MAC地址,如何知道接受者和自己同属一个子网,如果不在一个子网数据包如何发送给对方)  

IP协议(判断是否属于同一网络中),MAC地址只与生产厂商有关,无法通过MAC地址判断两台主机是否处于同一个子网。网络层引入了IP协议,让我们能够区分两台主机是否属于同一个网络

IPv4是一个32位的地址,用4个十进制数字表示。以C类地址192.168.24.1为例,其中前24位是网络地址,后8位是主机地址。如果两个IP地址在同一个子网内,则网络地址一定相同为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过AND运算后就可以得到网络地址。

IP地址是已知的,所以在网络层可以根据IP协议判断双方是否处于同一个子网。

ARP协议(地址解析协议),是根据IP地址获取MAC地址的一个网络层协议。ARP会发送一个请求数据包,数据包的首部包含了目标主机的IP地址,这个数据包在链路层再次进行包装,生成以太网数据包发送给子网内所有的主机。接收到数据包的主机会取出数据包里的IP地址跟自己的IP进行比较,如果相同就返回自己的MAC地址。ARP接收返回消息,来确定目标主机的MAC地址。

路由协议ARP的MAC寻址还是在同一个子网中,因此引入路由协议,首先通过IP协议来判断两台主机是否在同一个子网,如果在同一子网,就通过ARP协议去寻找MAC地址;如果不在同一个子网,以太网会将数据包发送给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,网关会进行多次转发,将数据包发送给目标IP所在的子网中,通过ARP协议获取目标MAC地址,最终也是通过广播形式将数据包发送给接收方。

IP数据包在网络层被包装的数据包叫IP数据包,IP数据包的首部包含了目标IP地址和源IP地址。

网络层的主要任务是定义网络地址,区分网段,子网内寻找MAC地址,对不属于同一子网的数据包进行路由。

3、传输层(UDP协议,TCP协议)

链路层定义了主机的MAC地址,网络层定义了IP地址,明确了主机所在的网段。有了这两个地址数据包就可以进行传输。
实际上数据包是从一个主机的某个应用程序出发,发送到另一个主机的应用程序,每台电脑都运行着很多应用程序,数据包被发送到接收方主机后,无法确定哪个应用程序要接受。

因此传输层引入了UDP协议解决这个问题,UDP协议定义了端口,同一个主机的每一个应用程序都有指定的唯一端口,网络传输中的数据包也必须加上端口信息。UDP数据包的首部包含了源端口和目标端口

UDP协议比较简单,没有确认机制,数据包发出后,无法知道对方是否接收成功,可靠性较差。TCP协议在UDP基础上建立了三次会话机制,在正式收发数据之前,必须和对方建立可靠的连接。相比UDP,TCP实现过程复杂,消耗连接资源多,传输速度慢   传输层主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议保证数据传输的可靠性。

4、应用层

以上三层协议传递的都是字节流,应用层是主要工作是定义数据格式,并按照对应的格式解读数据

全流程

首先应用层对请求包进行数据格式定义,接着传输层协议加上端口号,确定双方通信的应用程序,然后网络层加上了双方的IP地址,确认了双方的网络位置,最后链路层加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,以广播的方式,通过传输介质发送给对方主机。对于不同网段,数据包会转发给网关路由器,经过多次转发,最终发送到目标主机。

学习来源 https://www.cnblogs.com/onepixel/p/7092302.html, 讲的很好。