TCP/IP与网络编程
cc509a
这个作者很懒,什么都没留下…
展开
-
TCP/IP、Http、Socket的区别
网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket则是对TCP/IP协议的封装和应用(程序员层面上)。 也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,转载 2014-11-19 17:09:54 · 442 阅读 · 0 评论 -
zmq源码阅读笔记之网络消息与命令
mailboxmailbox是线程之间用于收发命令的类定义如下 class mailbox_t : public i_mailbox { public: mailbox_t (); ~mailbox_t (); fd_t get_fd () const; void send (const command_t ...原创 2018-11-23 16:44:27 · 1456 阅读 · 0 评论 -
zmq的内部结构
介绍:本文介绍了ZMQ的一些概述,但不会涉及到一些细节,因为随着版本的更新,实现的细节也不一样,而且很多代码是为了兼容不同的操作系统和编译器的,如果需要知道其中的细节,还是要看源码。全局状态:在库里使用全局变量看起来是一件搬起石头砸自己的脚的事情。一开始一切正常,直到一个全局变量被可执行文件链接两次(见下图),就会发生一些奇怪的错误和崩溃。为了防止这种事情发生,zmq没有使用全局变量,相反,...翻译 2018-11-23 16:46:21 · 1443 阅读 · 0 评论 -
zmq源码阅读笔记之基础数据结构
1,arrayzmq实现了一套自己的数组,数组内部用一个std::vector <T*> 来保存数据 template <typename T, int ID = 0> class array_t { private: typedef array_item_t <ID> item_t; public:...原创 2018-11-23 16:45:22 · 471 阅读 · 0 评论 -
常见IO模型
阻塞IO模型阻塞IO是最通用的IO,使用这种IO接受数据时,在数据没有到来之前程序会一直等待。非阻塞IO当把套接字设置成非阻塞IO时,则对于每次请求,内核都不会阻塞,会立即返回。当没有数据时,会返回一个错误。IO复用使用IO复用的可以在等待的时候假如超时时间,当超时时间没有到达的时候情况与阻塞IO是一样的,当时间到达,但是没有数据是,系统会自动返回,不在等待。s原创 2015-07-30 21:01:16 · 592 阅读 · 0 评论 -
TCP Three-Way handshake
initialize TCP variables:sequence numbersbuffers,flow control infoClient: connection initiatorSocket clientSocket = new Socket("hostname","portnumber");Server: contacted by clientS原创 2015-07-02 17:05:45 · 172 阅读 · 0 评论 -
TCP closing a connection
client closes socket:clientSocket.close();step1 :client sends TCP FIN control segment to serverstep2: Server receives FIN,replies with ACK. Closes connection,sends FIN.time wait 30原创 2015-07-02 17:07:54 · 800 阅读 · 0 评论 -
TCP buffer
Tcp有以下特点Reliableconnection orientedbyte-stream service要处理flow control:要有一个机制控制传送不要让buffer溢出congestion control:involves preventing too much data from being injected into the network,t原创 2015-07-01 10:55:39 · 1284 阅读 · 0 评论 -
udp协议
UDP是一种simple demultiplexer因为传输层之下的网络层,提供的也是不可靠的传输,也就是UDP用不可靠的服务来提供不可靠的服务那么为什么还需要UDP呢?因为网络层提供的端对端是 host to host ,即根据每个IP做到IP SOUCRE 对 iP source 而UDP做的就是在此基础上做到 process to process 即 demultiple原创 2015-06-30 17:00:51 · 406 阅读 · 0 评论 -
TCP header
端口号用来区别applicationsequence Number 用在滑动窗口协议,区别是否是要接收的第一个data str 在整个 str 的编号acknowledgement number 告诉对方这个number之前我都收到了SYN (FLAG) 1 : 建联线,一般是第一个封包 FIN(finish) 1: 代表结束连线ACK : 1 代表acknowledge原创 2015-07-01 14:23:34 · 1009 阅读 · 0 评论 -
libco协程
libco协程框架协程简介协程简称用户态线程,是在线程下自己实现的切换的用户态程序切换。实现方式大致分为以下方式:使用glibc ucontext 使用汇编实现 c 语言 switch-case c setjmp longjmplibco协程切换使用汇编实现, 支持独立栈(128k大小)和共享栈(写时拷贝)模式。支持hook socket族函数来完成网络自动协程的框架包装。...原创 2018-11-23 16:49:01 · 622 阅读 · 1 评论