回顾下TCP/IP协议
首先要知道什么是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协议模型来理解的:
- 个人PC在应用层请求发送数据DATA。
- 在主机到主机层(传输层,TCP协议层),建立端到端的报文传输,因此需要提供上层数据传输下来时使用的源端口(随机产生的),以及目的端口(也就是个人PC和远程Server之间在应用层使用的协议对应的端口号,比如HTTP协议对应80)。
- 在因特网层(IP协议层,网络层),又加了个包含PC(源IP)和Server(目IP)的ip地址的IP头。(协议号6对应上层为TCP协议)
- 在数据链路层,需要PC将数据传输给网关,此时需要 把PC和网关的MAC加到数据前面。(下图中的类型0x0800表示上一层为以太网层,且后面为IP包)
- 实际上在数据链路层的数据为帧的形式,而在物理链路上的数据是以比特流或者电气化的脉冲传输的,因此数据帧先要转化为bit流再进行传输。
- 网关在接收到bit流之后会把它转化为数据帧。通过以太网帧头发现目的MAC为自己的,知道是发给自己的,然后通过类型0x0800知道里面的是IP包。
- 网关首先会校验下源IP是否受损,没有的话进一步解封数据帧,发现目的IP不是自己的,通过路由表查找,如果有就将数据加上自己的WAN mac(GE0/0/1)和目的路由器的WAN mac(GE0/0/0)组成新的以太网帧头继续传输给目的路由器。
- 网关R2收到数据后,解封以太网帧头,发现目地MAC为自己,进一步查看IP头,发现目的IP不是自己,查找路由表发现刚好是自己直连的Server,进而将自己的MAC和Server的MAC组成新的以太网帧头,发送给Server。
- 最后终于来到了Server。首先,Server会将bit流转为数据帧,然后解封数据帧,发现目的MAC是自己,进一步查看IP头校验目的IP发现也是自己,继续打开TCP头,得知目的端口为80代表是HTTP应用的数据,而自己的80端口也是打开的,所以最后交给自己的HTTP应用程序处理。
备注:
- 所有目的MAC全部都是通过ARP(Address Resolution Protocol,地址解析协议)广播获取,也就是说PC会把数据帧发送给所有与它相连的网关。
- 以上所有截图全部来自《数通网络知识手册v1.2.pdf》--朱仕耿。
回顾下TCP/IP协议的更多相关文章
- TCP/IP协议族(一) HTTP简介、请求方法与响应状态码
接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单 ...
- socket、tcp/ip协议、udp协议
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...
- TCP/IP协议族(一)
TCP/IP协议族(一) HTTP简介.请求方法与响应状态码 接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的. ...
- TCP/IP协议原理与应用笔记05:TCP/IP协议下的网关
大家都知道,从一个房间走到另一个房间,必然要经过一扇门.同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关.顾名思义,网关(Gateway)就是一个网络连接到另一个网络的& ...
- iOS的TCP/IP协议族剖析&&Socket
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有S ...
- 深入浅出--iOS的TCP/IP协议族剖析&&Socket
深入浅出--iOS的TCP/IP协议族剖析&&Socket 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久! ...
- TCP/IP协议、三次握手、四次挥手
1.什么是TCP/IP协议 TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等. ...
- TCP\IP协议实践:wireshark抓包分析之链路层与网络层
目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...
- 深入浅出-TCP/IP协议族剖析&&Socket
Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 #简介 该篇文章主要回顾–TCP/I ...
随机推荐
- 20165318 预备作业3 Linux安装及学习
Linux安装及学习 一.VirtualBox和Ubuntu的安装 我安装的是VirtualBox 5.2.6和Ubuntu 16.04 LTS,安装过程按照老师博客中的步骤依次进行,出现了以下几个问 ...
- Vue2+Webpack创建vue项目
相比较AngularJS和ReactJS,VueJS一直以轻量级,易上手称道.MVVM的开发模式也使前端从原先的DOM中解放出来,我们在不需要在维护视图和数据的统一上花大量时间,只需要关注于data的 ...
- Yii设置Cache缓存的方法
先在配置文件components数组中加上: 'cache'=>array( 'class'=>'CFileCache'), 设置Cache: Yii::app()->cache-& ...
- memcached迁移方案——记一次memcached session服务的迁移
背景: (1)由于机房调整,需要迁移memcached: (2)需要在短期内迁移完成(一周以内): (3)该memcached 保存了用户的登录数据,非常重要,一旦出问题将导致大量的用户被踢出: (4 ...
- Odoo的@api.装饰器
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281437.html Odoo自带的api装饰器主要有:model,multi,one,constrains, ...
- C语言偏冷知识点汇总
1.C语言函数声明中参数类型写在右括号后是什么意思?如下代码所示: int add(a, b) int a; int b; { return a + b; } 像这样的声明是什么意思,我测试过在gcc ...
- [图解tensorflow源码] Session::Run() 分布式版本
- 控制层方法中获取url目录
控制层方法中获取url目录 Request.Url.GetLeftPart(UriPartial.Authority).ToString(); //返回 http://localhost:9246(网 ...
- nodeJs搭建简单服务器
实现简单的例子:hello word 把第一个文件命名为server.js 在server.js里写入 var http = require("http"); http.crea ...
- iOS UITextField的代理<UITextFieldDelegate>的几点笔记
今天做项目的时候,有个需求,点击按钮,就在特定的编辑框输入按钮中的文字,一开始我还以C++的思想来写,先获取光标的位置,然后在判断是否在那个编辑框,进行输入.后来我旁边的同事看到了直接教我用代理方法, ...