博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回顾下TCP/IP协议
阅读量:5077 次
发布时间:2019-06-12

本文共 1232 字,大约阅读时间需要 4 分钟。

首先要知道什么是TCP/IP协议,从字面意思来看TCP是“Transmission Control Protocol”的缩写,也就是传输控制协议。IP是“Internet Protocol”的缩写,即因特网控制协议。

其次,TCP/IP并不只是包含TCP和IP,而是指我们实现网络通讯用到的协议簇。下图中从应用层到数据链路层即为TCP/IP协议模型,也就是说TCP/IP协议为4层模型而OSI(Open System Interconnect)为7层。

下面我们看下实际过程中的信息传输是怎么通过TCP/IP协议模型来理解的:

  1. 个人PC在应用层请求发送数据DATA。
  2. 在主机到主机层(传输层,TCP协议层),建立端到端的报文传输,因此需要提供上层数据传输下来时使用的源端口(随机产生的),以及目的端口(也就是个人PC和远程Server之间在应用层使用的协议对应的端口号,比如HTTP协议对应80)。
  3.  在因特网层(IP协议层,网络层),又加了个包含PC(源IP)和Server(目IP)的ip地址的IP头。(协议号6对应上层为TCP协议)
  4. 在数据链路层,需要PC将数据传输给网关,此时需要 把PC和网关的MAC加到数据前面。(下图中的类型0x0800表示上一层为以太网层,且后面为IP包)
  5. 实际上在数据链路层的数据为帧的形式,而在物理链路上的数据是以比特流或者电气化的脉冲传输的,因此数据帧先要转化为bit流再进行传输。
  6. 网关在接收到bit流之后会把它转化为数据帧。通过以太网帧头发现目的MAC为自己的,知道是发给自己的,然后通过类型0x0800知道里面的是IP包。
  7. 网关首先会校验下源IP是否受损,没有的话进一步解封数据帧,发现目的IP不是自己的,通过路由表查找,如果有就将数据加上自己的WAN mac(GE0/0/1)和目的路由器的WAN mac(GE0/0/0)组成新的以太网帧头继续传输给目的路由器。
  8. 网关R2收到数据后,解封以太网帧头,发现目地MAC为自己,进一步查看IP头,发现目的IP不是自己,查找路由表发现刚好是自己直连的Server,进而将自己的MAC和Server的MAC组成新的以太网帧头,发送给Server。
  9. 最后终于来到了Server。首先,Server会将bit流转为数据帧,然后解封数据帧,发现目的MAC是自己,进一步查看IP头校验目的IP发现也是自己,继续打开TCP头,得知目的端口为80代表是HTTP应用的数据,而自己的80端口也是打开的,所以最后交给自己的HTTP应用程序处理。

备注:

  • 所有目的MAC全部都是通过ARP(Address Resolution Protocol,地址解析协议)广播获取,也就是说PC会把数据帧发送给所有与它相连的网关。
  • 以上所有截图全部来自《数通网络知识手册v1.2.pdf》--朱仕耿。

转载于:https://www.cnblogs.com/yuxiang666/p/10013604.html

你可能感兴趣的文章
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
Abstract Factory Pattern
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>