osi参考模型分为七层
1.应用层:
2.表示层:做一些格式上的转换,比如文本格式,图片格式,视频格式等;
3.会话层:建立俩个主机的链接
4.传输层:此层的协议主要有tcp /udp协议 进行的是俩个应用之间的链接,(对应的是端口号),举个例子;当一组数据从一台主机传到另一台主机时,这个数据需要根据端口号找到对应的应用;
5.网络层:有ip协议 (它的任务是主机与主机之间的通讯,非相邻的俩台主机,下面会说到相邻俩台主机) arp协议(通过ip地址进行局域网广播获取Mac地址) rarp协议(通过Mac地址进行区域网广播获得ip地址)
6.数据链路层:这一层主要是完成相邻俩太主机的链接(Mac地址又称物理地址,是你的网卡上的标号,全球唯一的序列号)
7.物理层:这一层简单的说就是光缆,传输电信号的;
有了这些协议这么建立俩个主机之间的通讯呢
应用层,表示层产生要发送的数据,交给传输层,传输层在数据前加上tcp或udp包头文件,相当于给它写一个端口号;传输层包装完后会交给网络层 ,这时再给它前面加一个ip包头,就是一个ip地址(有俩个2ip地址,一个源ip地址,一个目标ip地址),封装完后交给链路层,链路层给它封装Mac地址(一个源Mac和目标Mac地址),交给物理层,此时通过物理层通过电信号的形式进行发送,将这个打包好的数据给ip地址为目标ip地址的主机,这个时候的问题来了,给了一个目标ip和目标Mac,如何把它送指定的目标主机呢?
这个时候就要用到网络层的一张表:路由表了;路由表存放的是到达目标ip地址需要下一跳的ip地址,路由表的生成可以通过静态生成(也就是自己设置)或者动态生成
有了这张路由表之后我就可以根据路由表上的ip地址去传输了
现在假设俩种情况:
第一种:如果这个目标ip地址就在本局域网内,此时可用arp协议(目标ip地址)广播的形式就可以找到对应Mac地址的主机,这样通过找Mac的方式就可以找到目标主机;
第二种:如果本地没有的话,查询路由表,一般路由表上都会有default默认网关,就是你们家办理宽带的网段,(还有*号标志的网关,说明这个ip地址的主机和你的主机直连的,)这样通过默认网关转发出去之后呢就会到达另一个路由器(都是运营商进行维护的),会自动将根据你的目标ip进行路由到你要到达的网段,接下来就和第一种情况一样了;
还有一点注意的是,目标Mac是相邻主机的Mac地址,主机发送的数据首先是经过相邻主机的,只是相邻主机接受之后将这个包拆开,当发现目标ip不是自己的会重新打包,这个包的源Mac地址不变,将目标Mac地址改成下一个相邻主机的Mac地址;
备注:
路由表 : linux下可通过route查看