
计算机网络
文章平均质量分 79
Jaee
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CRC差错校验原理及实例
CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。相比于奇偶校验码(PCC)只能校验一位错误,循环冗余校验码(CR原创 2017-05-11 23:51:00 · 34323 阅读 · 5 评论 -
Linux网络编程【五】:TCP协议高性能服务器(http)模型之I/O多路转接select
I/O多路转接之select系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。select:该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它。参数意义:nfds:待测试描述符个数。最大文件描述符+1readfds/writefds/exceptfds:分别对应于需要检测的可读文件件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。异常原因: 1.原创 2017-06-05 18:17:15 · 709 阅读 · 0 评论 -
Linux网络编程【七】:TCP协议高性能服务器(http)模型之I/O多路转接poll
poll:poll的实现和select非常相似,只是描述fd集合的方式不同,poll使用pollfd结构而不是select的fd_set结构,其他的都差不多。不同与select使⽤三个位图来表⽰三个fdset的⽅式,poll使⽤⼀个 pollfd的指针实现该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它原创 2017-06-12 18:59:30 · 841 阅读 · 0 评论 -
Linux网络编程【二】:UDP socket套接字详解
与TCP socket一致,基于UDP socket(无连接)编程分服务器端和客户端服务器端过程:1.创建套接字(socket)2.将套接字绑定到一个本地地址和端口上(bind)3.用返回的套接字和客户端进行通信(recvfrom)4.返回,等待另一个客户请求。5.关闭套接字。客户端过程:1.创建套接字(socket)2.和服务器端进行通信(sendto)3.关闭套接字而与TCP不同的是:(1)socket函数中type类型SOCK_DGRAM是一种无连接的Socket,对应于无连接的UDP服务应用原创 2017-05-27 00:41:10 · 1054 阅读 · 0 评论 -
Linux网络编程【一】:TCP socket套接字详解
1.socketsocket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成 的socketpair就唯一标识一个连接。 socket本身有“插座”的意思,因此用来描述网络连接的一 对一关系原创 2017-05-26 23:51:48 · 8430 阅读 · 1 评论 -
Linux网络编程【四】:进程池、线程池原理及简单线程池源码分析
进程池和线程池概述进程池和线程池相似,所以这里我们以进程池为例进行介绍。如没有特殊声明,下面对进程池的讨论完全是用于线程池。进程池是由服务器预先创建的一组子进程,这些子进程的数目在 3~10 个之间(当然这只是典型情况)。线程池中的线程数量应该和 CPU 数量差不多。进程池中的所有子进程都运行着相同的代码,并具有相同的属性,比如优先级、 PGID 等。当有新的任务来临时,主进程将通过某种方式选择进程池中的某一个子进程来为之服务。相比于动态创建子进程,选择一个已经存在的子进程的代价显得小得多。至于主原创 2017-06-02 01:20:49 · 1063 阅读 · 0 评论 -
TCP状态转换
注:主动、被动 与 服务器、客户端没有明确的对应关系。这个图N多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下TCP建立连接的三次握手过程,以及关闭连接的四次握手过程。1、建立连接协议(三次握转载 2017-05-21 16:26:12 · 413 阅读 · 0 评论 -
TCP三次握手四次挥手
三次握手:所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接原创 2017-05-21 16:02:48 · 356 阅读 · 0 评论 -
网络协议中端口类型及分类
端口:在网络技术中,端口有两层意思:一个是物理端口,即物理存在的端口,如:集线器、路由器、交换机、ADSL Modem等用于连接其他设备的端口;另一个就是逻辑端口,用于区分服务的端口,一般用于TCP/IP中的端口,其范围是0~65535,,0为保留端口,一共允许有65535个端口比如用于网页浏览服务的端口是80端口,用于FTP服务的是21端口。端口号:由于物理端口和逻辑端口数量较多,为了对端口进行区分,将每个端口进行了编号,即就是端口号。分类:1.按端口号划分(1)公认端口(Well Know原创 2017-05-21 14:46:44 · 15447 阅读 · 1 评论 -
Linux网络编程【三】:TCP服务器多进程和多线程(http访问)版本
为了让服务器同时接受多个客户端访问,所以需要多进程或者多线程多进程版本:#include#include#include#include#include#include#include#includestatic void usage(const char* proc){ printf("%s [ip] [port]", proc);}int startup(c原创 2017-06-02 00:41:17 · 1163 阅读 · 0 评论 -
TCP报头中URG、PSH标志详解
URG:紧急标志。紧急标志为"1"表明该位有效。ACK:确认标志。表明确认编号栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。PSH:推标志。该标志置位时,接收端不将该数据进行队列处理,而是尽可能快地将数据转由应用处理。在处理Telnet或rlogin等交互模式的连接时,该标志总是置位的。RST:复位标志。用于复位相应的TCP连接。SYN:同步标志。表明同步序列编号栏有效。该标志仅在三次握手建立原创 2017-05-21 15:32:08 · 3242 阅读 · 0 评论 -
路由表生成算法
路由(名词)数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。路由(动词)某个路由节点为数据报选择投递方向的选路过程。路由节点一个具有路由能力的主机或路由器,它维护一张路由表,通过查询路由表来决定向哪个接口发送数据包。在Linux环境下可以通过ifconfig和route查看路由表的信息。路由表由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接⼜发送,其中最后一条是缺省路由条目。路由条目路由表中的一行,每个条目主要由目的网络地址、子网掩码、下一跳地址、发送接口四部分组原创 2017-05-17 01:18:10 · 3175 阅读 · 0 评论 -
NAT和代理服务器的原理及代表产品
代理服务器:代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache).代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求和暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网防卫该资源。代理服务器可在客户端或服务器端工作,也可在中间系统工作。代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用原创 2017-05-17 00:53:44 · 1010 阅读 · 0 评论 -
Linux网络编程【六】:TCP协议高性能服务器(http)模型之I/O多路转接epoll
什么是epoll?epoll是linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。注:epoll除了提供s原创 2017-06-12 01:32:41 · 755 阅读 · 0 评论