首先要知道什么是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》--朱仕耿。

回顾下TCP/IP协议的更多相关文章

  1. TCP/IP协议族(一) HTTP简介、请求方法与响应状态码

    接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于TCP/IP协议族的,本篇博客就先简单 ...

  2. socket、tcp/ip协议、udp协议

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  3. TCP/IP协议族(一)

    TCP/IP协议族(一) HTTP简介.请求方法与响应状态码 接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的. ...

  4. TCP/IP协议原理与应用笔记05:TCP/IP协议下的网关

    大家都知道,从一个房间走到另一个房间,必然要经过一扇门.同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关.顾名思义,网关(Gateway)就是一个网络连接到另一个网络的& ...

  5. iOS的TCP/IP协议族剖析&&Socket

    原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有S ...

  6. 深入浅出--iOS的TCP/IP协议族剖析&&Socket

    深入浅出--iOS的TCP/IP协议族剖析&&Socket   简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久! ...

  7. TCP/IP协议、三次握手、四次挥手

    1.什么是TCP/IP协议 TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等. ...

  8. TCP\IP协议实践:wireshark抓包分析之链路层与网络层

    目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...

  9. 深入浅出-TCP/IP协议族剖析&&Socket

    Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 #简介 该篇文章主要回顾–TCP/I ...

随机推荐

  1. python第十三课——嵌套循环

    2.嵌套循环: 概念:循环中再定义循环,称为嵌套循环: [注意]嵌套循环可能有多层,但是一般我们实际开发最多两层就可以搞定了(99%的情况) 格式: 1).while中套while常用 2).whil ...

  2. FTP response 421 received. Server closed connection

    现象: 在springboot的定时器轮询去下载ftp文件时,报以下错误: org.apache.commons.net.ftp.FTPConnectionClosedException: FTP r ...

  3. App性能测试-GT

    无意之间发现了GT(随身调)这个性能测试工具,该工具是由腾讯出品的开源测试工具,直接运行在手机上的“集成调测环境”. 1.下载:下载地址:开源地址:https://github.com/Tencent ...

  4. Docker实战(八)之Web服务与应用

    1.Apache 官方提供了名为httpd的Apache镜像,可以作为基础web服务镜像 Dockerfile(安装apache2) FROM httpd:2.4 COPY ./public-html ...

  5. PAT乙级1028

    1028 人口普查 (20 分)   某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...

  6. webStorm常用设置之过滤文件夹

    webStorm是一款很好用的前端IDE,但是不能否认的是webStorm很重,没有sublime轻便 尤其是项目cnpm后,加载node_modules时的状态,简直想那块豆腐自杀有莫有,就算你耐心 ...

  7. HDU1753 (大正小数相加)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1753 大明A+B Time Limit: 3000/1000 MS (Java/Others)    ...

  8. string首字母大写

    定义函数将字符串首字母大写: 例1:Study hard, improve every day. def toJadenCase(string): return string.title()print ...

  9. IceStorm示例运行步骤

    又一次忘了,记下: 1.启动IceStorm服务,输入:icebox --Ice.Config=config.icebox 启动IceStorm服务.2.消息接收:开启另一个命令行窗口,Subscri ...

  10. 20155220 吴思其 《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155220 <网络攻防> Exp1 PC平台逆向破解(5)M 实践内容 通过对实践对象--20155220pwn1的linux可执行文件的修改或输入,完成以下三块: 手工修改可执行文 ...