TCP/IP
一个主机如何将数据发送到另一主机上
一. 链路层(定义mac地址)
链路层概述
对电信号进行分组形成具有意义的数据帧,然后以广播的形式通过物理介质发送给接收方1. 数据帧(数据包)
首部包含目标mac地址,源mac地址和类型
数据过长需分割成多个帧进行发送
尾部固定4个字节,数据帧校验序列2. Mac地址
每块网卡都有自己唯一的16进制mac地址
计算机中数据传输必须是从一块网卡传输到另一块网卡,所以,若想完成数据传输,就应先知道目的地的mac地址,
二. 网络层(定义ip地址)
- 网络层概述:
定义网络地址(目标ip地址)
区分网段(是否在同一子网,也就是选择arp协议或者路由协议)
mac寻址(使用对应的协议获取mac地址)
路由数据包(发送数据包)
1. ip协议
Mac地址只与厂商有关,与所处网络无关,ip地址就是能够区分两台主机是否属于同一网络
子网掩码,在同子网内的两台主机,ip地址和子网掩码通过”按位与”运算后就可以得到网络地址
2. Arp协议
在同一子网内,根据ip地址获取mac地址
Arp请求数据包-以太网数据包-自网内所有主机-主机对比ip地址若相同则返回mac地址
3. 路由协议
通过ip协议判断是否在同一子网中(若两个IP地址在同子网内,则网络地址相同),
若在,则用arp协议获取mac地址,
若不在,以太网会将数据包发送给网关进行路由,网关是互联网上子网与子网之间的桥梁,经多次转发到目标ip所在的子网中,在通过arp获取目标机的mac地址
路由器为网络中的桥梁,根据信道情况,选择并设定路由,以最佳路径转发数据包
4. Ip数据包
Ip数据包,即在网络层被包装的数据包
首部,目标ip地址,源ip地址
三. 传输层(确定接受数据包的应用程序)
- 传输层概述
定义端口,并实施tcp协议确保通信可靠性
1. Udp协议
Udp协议定义了每个应用程序唯一的端口号,规定网络中传输的数据包必须加上端口信息
2. Udp数据包
首部,源端口和目标端口
Udp协议比较简单,无法确认对方是否收到数据包,为解决这一问题,tcp协议就诞生了
3. Tcp协议(传输控制协议,即有控制机制的udp协议)
每发送一个数据包都要求确认,若未收到确认,发送方必须重发这个数据包
Tcp协议传输数据有三次对话机制,稳定,但消耗资源多,传输速度慢
4. Tcp数据包
首部,源端口和目标端口
数据,无限长,但通常不会超过ip数据包的长度,以确保tcp数据包不被切割
四. 应用层
定义协议来规范数据格式,HTTP,FTP,SMTP
也就是定义数据格式,按照对应的合适解析数据
总结
链路层:定义数据帧,确认目标mac地址,传数据
网络层:(IP,ARP,路由)定义ip地址,确认两主机的位置,通过ip,arp协议进行mac寻址,对外网主机进行路由协议寻址,路由转发数据包
传输层:(UDP,TCP)定义应用程序端口,将对应的数据包传输给对应的数据程序
应用层:定义数据格式,按照格式解析数据