回顾下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 ...
随机推荐
- jQuery实现滚动时动态加载页面内容
有些网站的网页内容不是一次性加载完毕的,而是在鼠标向下滚动时动态加载的,这是怎么做到的呢?看下面代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
- Discuz!教程之删除注释云平台JS,加快DISCUZ访问
很多站长反应打开网站的时候有个http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1一直在加载中,导致网页打开速度很慢,这个时候你可以按本文教程 ...
- jenkins + sonar 安装配置
最近把snoar 添加上了 [root@snoar data]# wget https://sonarsource.bintray.com/Distribution/sonarqube/sonar ...
- 预备作业二——有关CCCCC语言(・᷄ᵌ・᷅)
有关CCCCC语言(・᷄ᵌ・᷅) 下面又到了回答老师问题的时候啦-(・᷄ᵌ・᷅) 有些问题正在深思熟虑中!敬请期待近期的不间断更新! 你有什么技能比大多人(超过90%以上)更好? 针对这个技能的获取你 ...
- reverse_iterator和ostream_iterator
每个容器都有反向迭代器(无需关联容器除外),reverse_iterator要和std::rbegin()以及std::end()配套使用,否则用了方向迭代器而不用rbegin()和rend()编译器 ...
- haproxy + lvs异同(优点-缺点)
LVS和HAProxy相比,它的异同是什么? 1. 两者都是如软件负载均衡.但lVS是基于linux操作系统实现的一种软负载均衡,Haproxy是根据第三 方应用实现的软负载均衡. 2. LVS是 ...
- [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
TF Prepare [图解tensorflow源码] 入门准备工作 [图解tensorflow源码] TF系统概述篇 Session篇 [图解tensorflow源码] Session::Run() ...
- 【FileZilla FTP Client】文件与服务器操作客户端
跨平台的FTP,FTPS和SFTP客户端 可以断点续传进行上传.下载(需要服务器支持). 自定义命令. 可进行站点管理.
- Blktrace原理简介及使用
Blktrace简介 Blktrace是一个用户态的工具,用来收集磁盘IO信息中当IO进行到块设备层(block层,所以叫blk trace)时的详细信息(如IO请求提交,入队,合并,完成等等一些列的 ...
- 底部带突出按钮的tabbar
#import "ViewController.h" #import "FirstViewController.h" #import "SecondV ...