🚙

💨 💨 💨

×

  • Categories

  • Archives

  • Tags

  • About

NAT穿越基础

Posted on 06-21-2016 | In Misc
  1. NAT类型
    1. 锥NAT
    2. 对称NAT
  2. NAT作用
  3. 穿透锥NAT
    1. 网络拓扑结构
    2. 使用UDP穿透NAT
    3. 使用TCP穿透NAT
  4. 穿透对称NAT
    1. 同时开放TCP( Simultaneous TCP open )策略
    2. UDP端口猜测策略
  5. 问题总结
  6. 参考

NAT类型

注 : 我们本文主要讨论穿越锥NAT

锥NAT

  • 全锥NAT :全锥NAT 把所有来自相同内部IP 地址和端口的请求映射到相同的外部IP 地址和端口。任何一个外部主机均可通过该映射发送数据包到该内部主机。
  • 限制性锥NAT :限制性锥NAT 把所有来自相同内部IP 地址和端口的请求映射到相同的外部IP 地址和端口。但是, 和全锥NAT 不同的是:只有当内部主机先给外部主机发送数据包, 该外部主机才能向该内部主机发送数据包。
  • 端口限制性锥NAT :端口限制性锥NAT 与限制性锥NAT 类似, 只是多了端口号的限制, 即只有内部主机先向外部地址:端口号对发送数据包, 该外部主机才能使用特定的端口号向内部主机发送数据包。

对称NAT

对称NAT 与上述3 种类型都不同, 不管是全锥NAT ,限制性锥NAT 还是端口限制性锥NAT ,它们都属于锥NAT (Cone NAT )。当同一内部主机使用相同的端口与不同地址的外部主机进行通信时, 对称NAT 会重新建立一个Session ,为这个Session 分配不同的端口号,或许还会改变IP 地址。

. . .

MySQL进阶二

Posted on 06-16-2016 | In DB

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句

. . .

MySQL进阶一

Posted on 06-14-2016 | In DB

引擎

MySQL是有多个引擎的, 不同的场景情况用不同的引擎以提升性能和灵活性.
三大最常用的引擎 :

  • InnoDB : 可靠的事务处理引擎 ,不支持全文搜索
  • MyISAM : 支持全文搜索, 不支持事务处理
  • MEMORY : 功能等同于MyISAM, 但数据存储在内存而不是磁盘, 所以速度非常快, 特别适用于临时表(temporary table)

索引

索引是用来改善搜索性能的, 不要滥用索引, 比如如对表进行INSERT、UPDATE和DELETE的操作索引反而会降低更新表的速度。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

. . .

cpp的各个编译选项备忘整理

Posted on 06-11-2016 | In Misc

编译器优化级别

用 C/C++ 的肯定都知道编译器编译有各种优化级别,编译器优化级别大体如下:

  • O0(默认选项):不开启优化,方便功能调试
  • Og:方便调试的优化选项(比 O1 更保守)
  • O1:保守的优化选项,打开了四十多个优化选项
  • O2:常用的发布优化选项,在 O1 的基础上额外打开了四十多个优化选项,包括自动内联等规则
  • Os:产生较小代码体积的优化选项(比 O2 更保守)
  • O3:较为激进的优化选项(对错误编码容忍度最低),在 O2 的基础上额外打开了十多个优化选项
  • Ofast:打开可导致不符合 IEEE 浮点数等标准的性能优化选项。

具体介绍如下:

. . .

UE4旋转笔记

Posted on 05-31-2016 | In UE4

最近想将一个vector转化为rotator,转而需要考虑UE4到底是怎么旋转的。
下面我们做个实验:

我们先将两个staticMesh放入场景,并将它们的rotation调成一样,如上图。
上面那个为renti_a_gear,下面那个为renti_a_gear2.

. . .

http报文笔记整理

Posted on 05-24-2016 | In NP

看了书和各种网上资料, 学东西嘛, 要做总结, 这些老笔记整理一下, 供以后方便查阅也加强印象和理解.

这里写图片描述

报文的组成

  • 起始行(start line)
  • 首部(header)
  • 主体(body)

可细分为 :

方法 :

如GET, HEAD, POST
这里写图片描述

. . .

也想做一个这样的博客吗?

Posted on 05-22-2016 | In Misc

这是我的博客源码 ,
我修改了很多NexT的代码来对原版 NexT 做了优化, 如下 :

  • 改了NexT的很多地方来优化移动端的表现,
    • header的布局
    • 移动端和PC端的侧边栏更加统一
    • 移动端的文章目录列表现在可以滑动了
  • 重做了本地搜索引擎
    • 现在移动端不会经常无故弹不出键盘了
    • 也不会列出加密文章的内容了
    • 更优雅的过渡动画
  • 添加了headroom支持, 现在有一个可以会自动隐藏的header了, 往下滚一下鼠标则隐藏, 往上则出现
  • 升级到了fancybox3并完成适配, 3更流畅且拥有更多效果
  • 添加了文章加密的支持

CSDN sucks

  • 实在是被CSDN的广告恶心到了
  • 最近CSDN的Markdown的无序列表每一列前面的小黑点都没有了
  • 手机网页版本的CSDN排版全无

所有博客瞬间排版全部变成一坨, 实在是不能忍.

所以才做了这个私人博客.

php与cgi

Posted on 05-22-2016 | In Misc

首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。

web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。

当web server收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。

好了,CGI是个协议,跟进程什么的没关系。那fastcgi又是什么呢?Fastcgi是用来提高CGI程序性能的。

. . .

1…16171819202122232425262728293031323334353637
Mike

Mike

🚙 🚗 💨 💨 If you want to create a blog like this, just follow my open-source project, "hexo-theme-neo", click the GitHub button below and check it out ^_^ . It is recommended to use Chrome, Safari, or Edge to read this blog since this blog was developed on Edge (Chromium kernel version) and tested on Safari.

11 categories
289 posts
111 tags
about
GitHub Spotify
© 2013 - 2025 Mike