深入浅出TCP与IP协议笔记

TCP/IP 4层结构:应用层 传输层 网络层 链路层

 
探索过程问题:一个主机的数据要经过哪些过程才到达对方的主机上
一组电信号就是一个数据包,一个数据包称为一帧,制定这个规则的就是以太网协议
 
0 物理介质:
光纤,双绞线,无线电波;都转换成0和1的电信号;不同的物理介质传输带宽 速率 传输距离以及抗干扰性不同;物理介质是网络通讯的基石;
http发送一个请求时,应用层,传输层,网络层和链路层的相关协议依次对 该请求 进行 包装 并 携带对应的首部,最终在 链路层 生成以太网数据包;
对方接收到数据包,就对该数据包一层一层采用对应的协议进行拆包,最后把 应用层数据 交给 应用程序 处理;
路由器把 数据包 通过物理介质转发到各个网关,网关根据数据里面携带的MAC地址,确认是否需要转发到其他网关,当 数据包 到达目标网关之后,网关在根据IP地址找到对应的主机
 
1 链路层:
完整的以太网数据包 :
首部:14字节;包含目标MAC地址 源MAC地址和类型。
数据:46 - 1500字节;如果传输数据超过1500字节 就分割层多个帧进行发送。
尾部:4字节;数据帧校验序列,确认数据包传输过程中是否损坏。
 
接入网络的设备必须安装网络设备器(网卡);
网卡地址就是数据包的发送地址和接收地址 -- 帧首部包含的MAC地址,MAC地址具有全球唯一性,十六进制,6个字节;
以太网采用 广播 形式 把数据包发给我所有子网内的所有主机,主机读取首部里面的MAC地址 跟自己的MAC地址比对,如果不同就丢弃
总结:链路层的主要工作是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方
 
2 网络层:
问题:发送者如何知道接受者的MAC地址?
发送者如何知道接受者和自己属于同个子网?
如果接受者的自己不在同一个子网,数据包如何发给对方?
网络层定义了三个协议:IP协议、ARP协议、路由协议
【1】IP协议
MAC地址与厂商有关,与网络无关;IP地址能够区分两台主机是否在同个网络;
版本:
IPV4、IPV6
32位 4个十进制数字,前半部分表示网络地址,后半部分表示该主机在局域网中的地址。所以能根据网络地址判断是否处于同个子网内。
IP地址和子网掩码通过按位与运算等到网络地址
【2】ARP协议(地址解析协议)
是根据IP地址获取MAC地址的一个网络层协议
ARP的MAC寻址是在同一个子网中
过程:
1ARP发送一个请求数据包 首部包含了目标主机的IP地址
2在链路层进行再次封装,生成以太网数据包,然后由以太网广播给子网内的所有主机
3所有主机收到这个数据包,取出IP地址,然后和自己的IP地址比较。
相同就返回自己的MAC地址
不同就丢弃数据包
4ARP接受返回信息,确定目标机的MAC地址
5同时将返回的MAC地址与对应的IP地址存入本机ARP缓存,下次请求时候直接查询ARP节约资源
【3】路由协议
通过IP协议判断两台主机是否按在同个子网内;
如果在,就通过ARP查询对应的MAC地址,然后以广播的形式向该子网内的所有主机发送数据包;
如果不在,就将该数据包转发给本子网的网关进行路由。
网关:互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将数据包转发到目标IP所在的自王中,然后通过ARP获取目标MAC地址,最终也是通过广播形式将数据包发给接收方
完成这个过程的物理设备就是路由器,扮演交通枢纽的角色,会根据信道情况,选择并设定路由器,以最佳路径转发数据包
【4】IP数据包
在网路层,被包装的数据包叫做IP数据包,IPV4数据包的结构如下图所示:
首部:20字节,目标IP地址和源IP地址 目标IP地址是网关路由的线索和依据;
数据:最大65515字节
 
所以:网路层的主要工作 定义网络地址,区分网段,自网内MAC寻址,对不同子网的数据包进行路由
 
3 传输层:
链路层定义了主机的MAC地址;
网络层定义了IP地址,明确了主机所在的网段;
问题:数据包从主机的某个应用程序发出,由对方主机接收,而每台电脑都可能运行很多应用程序,所以当数据包背发送到主机上之后,是无法确定哪个应用程序要接收这个包的。
解决:传输层映入UDP协议,定义了端口号,同个主机上的每个应用程序都需要制定唯一的端口号,并且规定网络传输的数据包必须加上端口信息。
UDP定义的数据包叫UDP数据包
首部:8个字节 包含端口,目标端口;
数据:65527字节
缺点:没有确认机制,无法知道对方是否收到,可靠性较差;
解决:TCP协议诞生
 
TCP协议(TCP传输控制协议)
面向连接的、可靠的、基于字节流的通信协议。
简单的说:TCP协议就是有确认机制的UDP协议。每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方必须重发这个数据包
为了保证传输的可靠性,TCP协议在UDP基础上建立了三次对话的确认机制,也就是说,在正式手法数据之前,必须和对方建立可靠的连接。三次握手
相比UDP,TCP实现过程复杂,消耗连接资源较多,传输速度慢
总结:传输层的主要工作是定义端口,表示应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性
 
4 应用层:
常见:HTTP FTP SFTP
总结:应用层主要工作是定义数据格式并按照对应的格式解读数据
 
5 全流程:
链路层:对0和1进行分组,定义数据帧,确定主机物理地址,传输数据
网络层:定义IP地址,确认主机所在的网络位置,通过IP获取MAC地址,对外网数据包进行路由转发
传输层:定义端口,确认主机应用程序身份,并把数据包交给应用程序
应用层:接收数据格式,并通过一定的格式解析数据
 

猜你喜欢

转载自www.cnblogs.com/chenrunxuan/p/9747934.html