网络
sjtuSmartBoy
这个作者很懒,什么都没留下…
展开
-
为什么用端口号而不用fd
主机为每个套接字分配一个端口号,报文到达主机的时候,运输层检查报文中的目的端口号并定向到相应套接字,之后数据再通过套接字进入连接的进程道理很简单,但之前有个问题一直不理解,为什么要通过端口号才能定向,直接通过fd定向到socket多好啊 从一位叫iMe的高手了解到原因是因为端口号是持久的,FD是可变的所以服务器开放的那些默认端口号80就很方便了,不需要用户在网址里输入这原创 2017-06-20 10:52:14 · 738 阅读 · 0 评论 -
异步和多线程
要了解异步就需要知道DMA,就是direct memory access(直接内存访问)的意思。当进行异步操作时,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源,只要CPU在发起数据传输时发送一个指令,硬件就开始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成,而这些无须消耗CPU时间。因此在DOS 这样的单进程(而且无线程概念)系统中也同样可以发起异步的原创 2017-06-29 16:29:54 · 233 阅读 · 0 评论 -
TCP快速重传为什么是三次冗余ack,这个三次是怎么定下来的?
两次duplicated ACK肯定是乱序造成的,丢包肯定会造成三次duplicated ACK!参见链接:https://www.zhihu.com/question/21789252转载 2017-06-25 17:00:10 · 1505 阅读 · 0 评论 -
enable_shared_from_this模板类使用完全解析
enable_shared_from_this模板类使用完全解析以前都没有用过enable_shared_from_this模板类,虽然经常遇到但是也没怎么去关注,今天抽时间好好学习了下enable_shared_from_this模板类,发现在使用shared_ptr模板类和enable_shared_from_this模板类时有许多陷阱的,故记录于此。什么时候该使用enable转载 2017-07-07 09:53:17 · 289 阅读 · 0 评论 -
对于观察者模式,Reactor模式,Proactor模式的一点理解
最近就服务器程序IO效率这一块了解一下设计模式中的Reacotr模式和proactor模式,感觉跟观察者模式有些类似的地方,网上也看了一些其他人对三者之间区别的理解,都讲得很仔细,在此根据自己的理解做一点简单的记录和总结,如果理解不对的地方,以后再慢慢深入和更新。观察者模式: 也可以称为为 发布-订阅 模式,主要适用于多个对象依赖某一个对象的状态并,当某对象状态发生改变时,要通知转载 2017-07-20 19:24:15 · 243 阅读 · 0 评论 -
Reactor模型 三种模型 演变
无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件。1.2.1. 单线程模型Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下:1)作为NIO服务端,接收客户端的TCP连接;2)作为NIO客户端,向服务端发起TCP连接;转载 2017-07-20 19:52:02 · 3309 阅读 · 1 评论 -
设置socket的非阻塞模式
关于socket的阻塞与非阻塞模式以及它们之间的优缺点,这已经没什么可言的;我打个很简单的比方,如果你调用socket send函数时;如果是阻塞模式下:send先比较待发送数据的长度len和套接字s的发送缓冲的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的转载 2017-07-20 22:39:22 · 1167 阅读 · 0 评论 -
关于使用IO复用和多线程问题
今天突然想到我什么情况下用IO复用什么情况下用多线程呢?于是上网搜浏了下,以下为答案:多线程模型适用于处理短连接,且连接的打开关闭非常频繁的情形,但不适合处理长连接。多线程模型默认情况下,(在Linux)每个线程会开8M的栈空间,再TCP长连接的情况下,2000/分钟的请求,几乎可以假定有上万甚至十几万的并发连接,假定有10000个连接,开这么多个线程需要10000*8M=80G的内存转载 2017-07-20 23:53:50 · 1299 阅读 · 1 评论 -
Linux下的进程和作业概念,以及作业管理
进程的一个比较正式的定义是:在自身的虚拟地址空间运行的一个单独的程序。Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。 交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。 批处理进程——这种进程和终端没有联系,是一个进程序列。 监控进程(也称守护进程)——linux系统启动时启动的进程,并在后台运行。进程和作业的转载 2017-08-13 22:22:05 · 1337 阅读 · 0 评论