随笔分类 -  网络编程

IP协议
摘要:IP服务的特点 IP协议是TCP/IP协议族的动力,为上层协议提供无状态、无连接、不可靠的服务。 无状态:指IP通信双方不同步传输数据的状态信息,因此所有的IP数据报的发送、传输和接收都是相互独立、没有上下文关系。它的缺点就是无法处理乱序和重复的IP数据报。 无连接:指IP通信双方都不长久地维持对方 阅读全文

posted @ 2018-01-10 11:29 Itsad 阅读(480) 评论(0) 推荐(0) 编辑

TCP、IP、ARP协议之间的工作关系
摘要:TCP协议与ARP协议位于不同的层,不能用“并列”的思维来考虑。TCP位于传输层,而ARP工作在网络层(也有说法是数据链路层,主要看怎么理解),但实际上掌管网络层的大boss是IP协议,ARP协议用于实现IP地址向MAC地址的转换,不过是个跑龙套的。 除此之外,网络层想要把数据发出去还要依靠数据链路 阅读全文

posted @ 2018-01-09 11:16 Itsad 阅读(5027) 评论(0) 推荐(3) 编辑

HTTP(超文本传输协议)
摘要:HTTP是以超文本传输为目的而设计的应用层协议,属于基于TCP/IP实现的协议。 浏览器也属于基于套接字的客户端,因为连接到任意web服务器端时,浏览器内部也会创建套接字。只不过浏览器多了一项功能,将服务器端传输的HTML格式的超文本解析为视图。 Web服务器端是以HTTP协议为基础传输超文本的服务 阅读全文

posted @ 2017-12-23 22:21 Itsad 阅读(1590) 评论(0) 推荐(0) 编辑

多线程
摘要:#线程相对于进程的优点: 线程的创建和上下文切换比进程的创建和上下文切换更快。 线程间交换数据时无需特殊技术。 #线程和进程的差异: 多进程>每个进程的内存空间都由保存全局变量的“数据区”、malloc等函数动态分配提供空间的堆(Heap)、函数运行时使用到的栈(Stack)构成。每个进程都具有这种 阅读全文

posted @ 2017-12-17 22:07 Itsad 阅读(132) 评论(0) 推荐(0) 编辑

IO多路复用—epoll
摘要:epoll可以理解为event poll,不同于忙轮询和无差别轮询,epoll只会把哪个流发生了怎样的I/O事件通知我们。此时我们对这些流的操作都是有意义的。复杂度降低到了O(k),k为产生I/O事件的流的个数。 epoll的相关操作: epoll_create 创建一个epoll句柄,一般epfd 阅读全文

posted @ 2017-11-30 11:40 Itsad 阅读(199) 评论(0) 推荐(0) 编辑

IO多路复用—select
摘要:int select(int nfds, fd_set *rdset, fd_set *wrset, fd_set *exset, struct timeval *timeout); selsect存在的缺点: 如果没有I/O事件产生,我们的程序就会阻塞在select处。但是依然有个问题,我们从se 阅读全文

posted @ 2017-11-28 14:35 Itsad 阅读(594) 评论(0) 推荐(0) 编辑

网络数据包解析
摘要:TCP/IP协议数据包,一般由应用层、传输层、网络层、数据链路层封装而成。 四层协议各自的作用: 数据链路层实现了网卡接口的驱动程序。 网络层实现了数据包的选路和转发。 传输层为两台主机上的应用程序提供端到端(end to end)的通信。 应用层负责处理应用程序的逻辑。 #1、先封装的协议头是传输 阅读全文

posted @ 2017-11-23 22:11 Itsad 阅读(12187) 评论(0) 推荐(0) 编辑

libpcap抓取数据包
摘要:libpcap是数据包捕获函数库。该库提供的C函数接口可用于需要捕获经过网络接口数据包的系统开发上。libpcap提供的接口函数主要实现和封装了与数据包截获有关的过程。这个库为不同的平台提供了一致的编程接口,在安装了libpcap的平台上,以libpcap为接口写的程序,能够自由的跨平台使用。 li 阅读全文

posted @ 2017-11-23 15:29 Itsad 阅读(4232) 评论(0) 推荐(0) 编辑

定时机制
摘要:在规定的时间之后去执行某个任务 阅读全文

posted @ 2017-11-20 15:08 Itsad 阅读(244) 评论(0) 推荐(0) 编辑

网络通信编程
摘要:网络通信:全双工 TCP和UDP相同点:同属传输层区别: TCP:有连接:通信双方在通信之前事先建立连接,类似于打电话。 整个通信过程可以保证可靠的传输,即数据不会丢包、失序、乱码等,TCP在传输过程中还可实现流量控制。 使用场合:可靠新要求比较高的场合,比如账户密码、文件传输等。 UDP:无连接, 阅读全文

posted @ 2017-11-20 11:59 Itsad 阅读(1249) 评论(0) 推荐(0) 编辑

socket客户端怎么判断服务器断开
摘要:方法一:当recv()返回值小于等于0时,socket连接断开。但是还需要判断 errno是否等于 EINTR,如果errno == EINTR 则说明recv函数是由于程序接收到信号后返回的,socket连接还是正常的,不应close掉socket连接。 方法二: struct tcp_info 阅读全文

posted @ 2017-11-20 11:21 Itsad 阅读(930) 评论(0) 推荐(0) 编辑

导航