NAT Windows如何收发数据包

0x00.NAT协议

NAT((Network Address Translation,网络地址转换),是一种技术。

当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。

NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

  1. 宽带分享:这是 NAT 主机的最大功能。
  2. 安全防护:NAT 之内的 PC 联机到Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。

资源访问错误

假设内网有M个IP地址,每个IP地址发出去的包中有N个源端口号,共有M×N个组合;外网口可用一个外部IP地址搭配M×N个端口号与之一一对应。

内网向外网发送数据包时,对每一个内部源IP地址及其源端口号组合,用一个与之一一对应的端口号和外部IP地址取代之,同时建立地址转换表;路由器收到外网的反向数据包时查询地址转换表,将外部目标IP地址与目标端口号转换成内部IP地址与端口号转发。

0x01.socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。数据包中,二个IP地址与二个端口号作为一个整体称为套接字。

传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。 传输层连接的端点叫做套接字(socket)。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)

套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡的传输介质将这段信息发送给另一台主机的Socket中,使这段信息能传送到其他程序中。因此,两个应用程序之间的数据传输要通过套接字来完成。

0x02.Windows发送与接收数据包的流程

当应用软件要发送数据的时候就要调用操作系统的相应功能,经该系统调用后CPU的工作方式就从用户方式变为内核方式。

资源访问错误

在操作系统内利用函数调用,调出相应功能的模块,当要操作硬件时能调出设备驱动,以便实际上与网络进行数据的交换,而当网络硬件上有数据到达时,必须进行处理时就通过硬件中断调出驱动模块这时就从用户方式切换到内核方式。

如上所述在计算机系统内有各种各样的功能模块和工作方式它们均可通过系统调用、函数调用以及中断请求进行切换处理。

0x03.网卡

网卡的概念

网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第2层。它使得用户可以通过电缆或无线相互连接。每一个网卡都有一个被称为MAC地址的独一无二的48位串行号,它被写在卡上的一块ROM中。在网络上的每一个计算机都必须拥有一个独一无二的MAC地址。没有任何两块被生产出来的网卡拥有同样的地址。这是因为电气电子工程师协会(IEEE)负责为网络接口控制器(网卡)销售商分配唯一的MAC地址。

网卡对收发数据的处理过程

网卡经常监视着输入的电压和光信号的有无,一旦有数据包到达,先将其存放在网卡的缓冲区中,接着向CPU发中断请求,CPU执行中断服务程序马上读取这些数据。如果不对网卡缓冲区中的数据包迅速处理,当后面的数据到达时网卡的缓冲区可能被填满,如果缓冲区被填满后仍有数据包到达时,缓冲区就会溢出从而产生丢失数据包的现象。

当发送数据时,CPU调用中断服务程序将数据写入网卡的发送缓存区,网卡执行中断服务程序发送完一个包后,向CPU发中断请求,接着发送。

网卡通过中断请求完成I/O操作。

网卡的功能

帧的识别与校验,拆帧装帧,中断请求,信号转换,串并转换,收发缓存,侦听信号,执行CSMA/CD协议。
即:

  1. 数据的封装与解封:
    发送时将上一层传递来的数据加上首部和尾部,成为以太网的帧。接收时将以太网的帧剥去首部和尾部,然后送交上一层
  2. 链路管理:
    主要是通过CSMA/CD(Carrier Sense Multiple Access with Collision Detection ,带冲突检测的载波监听多路访问)协议来实现
  3. 数据编码与译码:
    即曼彻斯特编码与译码。其中曼彻斯特码,又称数字双向码、分相码或相位编码(PE),是一种常用的的二元码线路编码方式之一,被物理层使用来编码一个同步位流的时钟和数据。在通信技术中,用来表示所要发送比特 流中的数据与定时信号所结合起来的代码。 常用在以太网通信,列车总线控制,工业总线等领域。
欢迎请我喝奶茶(*゜ェ゜*)
---这篇文章到头了---感谢您的阅读-------------