zoukankan      html  css  js  c++  java
  • NAT(Network Address Translation)

    本人没有系统的学过计算机网络,但是对计算机网络又特别好奇,可是每每看到那些讲解网络的大部头,就累觉不爱了。

    但是,经过零零总总的学习,对网络多多少少还是有点了解的。

    应用层    
    传输层 数据包 gateway
    网络层 IP分组 router
    数据链路层 bridge
    物理层 比特流 repeater

     

    虽然不喜欢看那么多文字描述,但是总是试图把从我这台电脑上到你那台电脑上的流程想清楚。

    比如,我在qq上打“I love you”,怎么就在你就知道我爱上你了呢。

    首先,这个肯定是经过Socket通信的,通过Socket打开一个流,(Socket是神马?额,简单来说就是方便程序员编程的一个通信接口),程序将这这行字写到流里边。

    这时就从应用层来到了传输层,原来的那行字变成了字节流,成了TCP数据包中的一段数据。

    然后再到网络层,可能由于数据报过大,IP层需要对TCP包分片,在首部有专门的字段标识哪些分片是来自同一个数据报。

    接下来,我们的网络适配器开始接手这个IP分组,数据链路层是根据MAC地址来传输帧的,所以还要在上层IP分组加上一些必要的首部和尾部。

    最后数据就来到了网线上,这里是网络的最底层。

    数据来到我家的路由器,然后发送出去,中间经过好多路由,中间的路由协议自行脑补,我也只是了解,最终到达腾讯的QQ服务器,然后服务器再把这句话发给你。

    这些大致的过程我都了解,唯一想不通的是,如果你是在女生宿舍里,你和你的舍友都在登qq,QQ服务器把这句话已经送达到你们宿舍的路由器,最后为什么没有发生悲剧——那句话被发到了你舍友的qq上。(好悲催!!!)

    幸好没发生这样的悲剧,你舍友我可是见过的,还是算了吧,不怎么like。

    这个工作就是NAT来完成的!

    我得感谢NAT啊,它没坑我。

    QQ服务器肯定不知道你们的内部地址,诸如192.168.1.101,192.168.1.102……网络中的路由器是不会转发这样的地址的。

    原来你的qq经过NAT路由器访问qq服务器,NAT就记录下(192.168.1.101,153.7.*.188),后一个是你们路由的真是IP地址,这叫做NAT地址转换表,然后回来的时候,就很容易知道是谁了。

  • 相关阅读:
    ES6/ES2015核心内容 import export
    JavaScript 标准参考教程(alpha) 阮一峰
    NPM 学习笔记整理
    (尚026)Vue_案例_动态初始化显示(尚025)
    (尚025)Vue_案例_静态组件
    (尚024)Vue_案例_交互删除
    (尚023)Vue_案例_交互添加
    (尚022)Vue案例_初始化显示(十分详细!!!)
    (尚021)Vue_eslint编码规范检查
    (尚020)Vue打包发布项目
  • 原文地址:https://www.cnblogs.com/flyfly121/p/4728845.html
Copyright © 2011-2022 走看看