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地址转换表,然后回来的时候,就很容易知道是谁了。

  • 相关阅读:
    《驱动学习
    《海思3521D
    《uboot网卡驱动分析》
    《驱动学习
    《驱动学习
    《驱动学习
    对应第一篇文章api的编写
    Dot模板的使用小结2
    项目代码摘抄,dot的用法之1
    文字的默认基线是底部对齐的
  • 原文地址:https://www.cnblogs.com/flyfly121/p/4728845.html
Copyright © 2011-2022 走看看