网络基础
文章平均质量分 82
hustsselbj
这个作者很懒,什么都没留下…
展开
-
UNIX网络编程0 IP头,TCP头,UDP头,MAC帧头定义
转自 http://www.cnblogs.com/li-hao/archive/2011/12/07/2279912.html一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMac转载 2015-08-26 10:35:06 · 876 阅读 · 0 评论 -
UNIX网络编程3 使用select()
select函数必需的头文件:和。这个函数允许进程指示内核等待多个事件(任何描述符字准备好读或写或有异常条件待处理)中的任一个发生,并仅在事件发生或经过某指定的时间后才唤醒进程。所以调用select的进程会在这个函数阻塞,等待事件发生或者超时。函数原型:select(int maxfdp, fd_set *readset, fd_set *writeset, fd_set *excep原创 2015-08-14 10:49:45 · 511 阅读 · 0 评论 -
UNIX网络编程8 从图中了解TCP协议在Linux内核中的实现
Packet Reception图1展示了一个新的包从网线进入到用户应用的路径。Linux 内核使用一个sk buff数据结构来描述每个packet。当一个packet到达网卡NIC时,它调用DMA引擎将packet放进内核内存中通过存储在一个环形buffer的空的sk buffs叫做rx ring。一个进入的packet如果环形缓冲区满了则被丢掉。当一个packet在较高协议层被原创 2015-08-27 21:00:00 · 673 阅读 · 0 评论 -
UNIX网络编程6 从tcpdump了解到的TCP/UDP发送限制和缓冲区问题
本节主要解决的问题:MTU和TCP/UDP一次发送的大小限制,read/write 或者 send/recv返回时机和数值,内核发送和接收缓冲区大小,未解决通告窗口win大小和发送包长length的关系,内核TCP再往下层的实现未关注。一些结论:首先明白,用户空间缓冲区就是指你的程序中存放原始数据的和用于接收数据的char数组,内核空间的tcp收发缓冲区有默认值,也会自动动态地增加原创 2015-08-27 20:43:32 · 1750 阅读 · 0 评论 -
UNIX网络编程7 利用tdpdump理解socket相关函数和数据包的时序
本次测试的主要原因是不了解connect() accept()和三次握手的先后顺序。为了能够方便获得时序关系,在程序关键点都插入了printTimeLog()打印出时间戳和日志信息,并且在服务端listen()和accept()之间插入长时间的sleep(),在客户端connect()和send()之间也插入一定时间的sleep(),然后一次启动tcpdump和server以及client,根据程原创 2015-08-27 20:51:47 · 1043 阅读 · 0 评论 -
UNIX网络编程2 理解select、poll、epoll原理
三者实现原理对比分析select, poll, epoll都是IO多路复用的机制,上文中提到的多路复用主要是以select为例,select和poll大同小异,因为select和poll的实现有明显的缺点,所以在Linux2.5.44中引入了新的处理大批量句柄的API——epoll,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。这里还是要强调,I/O多路复用机制的目的是应对大量的原创 2015-08-13 17:48:06 · 1468 阅读 · 0 评论 -
UNIX网络编程1 理解同步、阻塞、非阻塞、异步网络I/O
本文侧重的是网络I/O,如blocking、non-blocking、I/O multiplexing(event driven I/O)、signal-driven(不常用)、 asynchronous这几种UNIX网络编程中提到的模型。wiki中的Asynchronous I/O认为,asynchronous I/O和non-blocking I/O是一个意思,都是指一种I/O处理形式:在原创 2015-08-12 16:22:38 · 1029 阅读 · 0 评论 -
UNIX网络编程5 一些相似函数的比较和使用
1. bzero和memsetbzero是传统BSD函数,属于POSIX标准,使用头文件string.h,bzero无返回值,推荐使用memset替代bzero。bzero(&servaddr, sizeof(servaddr));memset(&remote_addr, 0, sizeof(remote_addr));2. perror和stderrperror和st原创 2015-08-18 15:13:58 · 562 阅读 · 0 评论 -
汇总一些网络相关的基础概念
TCP/IP参考模型:四层,自下而上分别是:主机到网络层->网络互联层->传输层->应用层。对应OSI七层模型:(物理层、数据链路层)->网络层->传输层->(会话层->表示层->应用层)每一层的数据单元:(比特->帧)->包packet带IP头->段segment带TCP/UDP头->(数据、消息、报文message) TCP/IP协议格式:报文封装格式:Ethernet原创 2015-08-12 15:55:18 · 518 阅读 · 0 评论 -
UNIX网络编程4 使用epoll
使用:http://blog.chinaunix.net/uid-20384806-id-1954307.html优点:http://blog.csdn.net/wangpengqi/article/details/9933011源码分析 http://blog.csdn.net/chen19870707/article/details/42525887 int epo原创 2015-08-18 10:33:51 · 561 阅读 · 0 评论