
Linux网络编程
u010944926
这个作者很懒,什么都没留下…
展开
-
linux网络编程之TCP/IP基础(二):利用ARP和ICMP协议解释ping命令
一、MTU 以太网和IEEE 802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit) 如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就要进行分片(Fragmentation),把数据报分成若干片,这样每一片都小于MTU。 当网络上的两台主机互相进行通信时,转载 2014-03-03 18:19:19 · 821 阅读 · 0 评论 -
linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
一、ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,共七层,如下图。 物理层(Physical Layer):物理层定义了所有电子及物理设备的规范,为上层的传输提供了一个物理介转载 2014-03-03 18:18:24 · 845 阅读 · 0 评论 -
linux网络编程之TCP/IP基础(三):IP数据报格式和IP地址路由
一、IP数据报格式 IP数据报格式如下: 注:需要注意的是网络数据包以大端字节序传输,当然头部也得是大端字节序,也就是说: The most significant bit is numbered 0 at the left, and the least significant bit of a 32-bit value is numbered 31 on the r转载 2014-03-04 10:05:46 · 560 阅读 · 0 评论 -
linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
一、TCP段格式: TCP的段格式如下图所示 源端口号与目的端口号 源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。 序号 序号表示在这个报文段中的第一个数据字节序号。 确认号 仅当ACK标志为1时有效。确认号表示期望收到的下一个字节的序号。 头部长度 4位,TCP头部最多60个字节,最少20个字转载 2014-03-04 10:06:30 · 814 阅读 · 0 评论 -
linux网络编程之TCP/IP基础(五):分析一帧基于UDP的TFTP协议帧
下图是UDP的段格式: 相比TCP段格式,UDP要简单得多,也没啥好说的,需要注意的是UDP数据长度指payload加上首部的长度。 下面分析一帧基于UDP的TFTP协议帧: 以太网首部 0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a8 08 00 IP首部 0000: 45 00 0010:转载 2014-03-06 11:17:07 · 558 阅读 · 0 评论 -
linux网络编程之socket(一):socket概述和字节序、地址转换函数
一、什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口。 socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。 socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6,以及以后要讲的UNIX Domain Socket。然而,各种网络协议的地址格式并不相同,如下图所示:转载 2014-03-06 11:58:15 · 871 阅读 · 0 评论 -
linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
一、基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时转载 2014-03-08 16:08:32 · 757 阅读 · 0 评论 -
linux c语言 select函数用法
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等 待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 可是使用Select就可以完成非阻塞(所转载 2014-04-07 15:10:42 · 427 阅读 · 0 评论