
Network Programming
haha and giraffe
一只努力的长颈鹿
展开
-
HTTP知识总结
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是一个用于web的客户端与服务器之间的交互协议。其在TCP/IP协议栈中处于应用层,与其相关的还有DNS(域名与IP之间的转换协议)、TCP(传输层协议)、IP(网络层协议)。目前主流的版本是HTTP/1.1,同时HTTP/2.0也在推广。原创 2019-12-13 15:12:07 · 347 阅读 · 0 评论 -
网络编程基础知识
网络编程就是编写程序使两台连网的计算机相互交换数据。而socket就是连接两台计算机的纽带,首先了解一些socket相关函数。SOCKET 创建套接字所用的socket函数#include <sys/socket.h>int socket (int domain,int type,int protocol);成功时候返回socket文...原创 2018-10-16 18:49:18 · 360 阅读 · 0 评论 -
网络编程笔记——UDP
TCP原理首先,TCP套接字的数据收发无边界,意思就是即使调用1次write函数传输40字节数据,客户端也有可能通过4次read函数调用每次读取10字节。实际上,数据在网络中存在输入缓冲和输出缓冲,调用write函数时,数据将移动到输出缓冲,在适当的时候传向对方的输入缓冲,然后对方将调用read函数从输入缓冲中读取数据。IO缓冲特性:(1)IO缓冲在每个TCP套接字中单独存在(2)IO...原创 2018-11-07 11:43:12 · 162 阅读 · 0 评论 -
网络编程笔记——套接字可选项
转自 https://blog.youkuaiyun.com/wangdd_199326/article/details/76595293套接字可选项套接字具体多种特性,可通过可选项更改。1 套接字可选项和I/O缓冲大小SOL_LOCKET层是套接字相关的通用可选项IPPROTO_IP层可选项是IP协议相关事项IPPROTO_TCP层可选项是TCP协议相关事项可选项的读取和设置通过如下两个函数完...转载 2018-11-08 10:03:44 · 123 阅读 · 0 评论 -
网络编程笔记——多进程服务器
多进程服务器端并发服务器实现模型和方法主要有三种:(1)多进程服务器端:通过创建多个进程提供服务(2)多路复用服务器:通过捆绑并统一管理IO对象提供服务(3)多线程服务器:通过生成与客户端等量的线程提供服务用sigaction信号处理技术消灭僵尸进程。(这里不详述)多进程服务器端实现echo服务器。每当客户端请求服务时,回声服务器就创建子进程以提供服务。步骤如下:(...原创 2018-11-08 10:36:23 · 191 阅读 · 0 评论 -
TCP协议详述
TCP协议是面向连接的传输层协议。其相对于UDP而言,主要有三个特征:面向连接、可靠传输、面向字节流。面向连接。TCP协议规定双方通信之前需建立可靠的连接(三次握手),通信结束后需断开连接(四次分手)。由此可见,TCP协议也是一种一对一的通信协议,即不支持广播和多播。 可靠传输。TCP协议规定发送端发送的每个报文段都要得到接收端的回复(ACK),除此之外,TCP还有超时重传,定时器等...原创 2018-12-06 22:47:56 · 335 阅读 · 0 评论 -
IP协议详述
本文将从两个方面对IP协议进行详解:IP头部信息,IP数据报的路由和转发。IP基础知识 IP协议是TCP/IP协议栈网络层的协议,它主要是为上层提供无状态、无连接、不可靠的服务。无状态是指IP通信双方不同同步传输数据的状态信息,所有的IP数据报的发送、传输和接受都是独立的,这种服务的最大缺点是无法处理乱序和重复的IP数据报,所以每当接收端接收到完整的IP数据报,只能把其将数据部分...原创 2018-12-10 21:49:41 · 304 阅读 · 0 评论 -
网络编程笔记——select、poll、epoll
五种IO模型简介 阻塞式IO,非阻塞式IO,IO复用,信号驱动式IO,异步IO为五种UNIX\LINUX下的IO模型。阻塞式IO。默认情况下所有套接字都为阻塞,当进程调用IO系统调用时(如read,recvfrom),会从用户态转换成内核态,准备从内核的缓存区中将数据复制到进程的缓冲区,如果数据没有准备好(即没有到达套接字),则一直阻塞直到数据准备好然后进行复制(或者发生错误返回)。...原创 2019-03-09 20:26:45 · 414 阅读 · 0 评论 -
高性能服务器程序框架
我们按照服务器的一般原理,可将服务器解析为三个主要的模块:IO处理单元(主要用于处理客户连接,读写网络数据),逻辑单元(业务进程或者线程,用于分析客户数据并将结果传递给IO处理单元或者而直接发给客户端,具体是哪种方式取决于事件处理模式),存储单元(本地数据库或者缓存)。模块之间需要有可靠的通信方式,一般为请求队列,或者是池。一、两种高效事件处理模式 服务器通常要处理三种事...原创 2019-03-11 11:13:43 · 137 阅读 · 0 评论