2013年7月22日

UNIX网络编程——getsockname和getpeername函数

摘要: 这两个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址即得到对方的地址(getpeername)。#include int getsockname(int sockfd,struct sockaddr* localaddr,s... 阅读全文

posted @ 2013-07-22 23:56 胡永光 阅读(177) 评论(0) 推荐(0) 编辑

UNIX网络编程——并发服务器(TCP)

摘要: 在迭代服务器中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。 网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就fo... 阅读全文

posted @ 2013-07-22 19:35 胡永光 阅读(169) 评论(0) 推荐(0) 编辑

UNIX网络编程——基本TCP套接字编程

摘要: 一、基于TCP协议的网络程序下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于... 阅读全文

posted @ 2013-07-22 14:19 胡永光 阅读(166) 评论(0) 推荐(0) 编辑

UNIX网络编程——socket概述和字节序、地址转换函数

摘要: 一、什么是socketsocket可以看成是用户进程与内核网络协议栈的编程接口。socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6,以及以后要讲的UNIX Domain Sock... 阅读全文

posted @ 2013-07-22 13:29 胡永光 阅读(175) 评论(0) 推荐(0) 编辑

UNIX网络编程——TCP输出,UDP输出

摘要: TCP输出 每一个TCP套接字有一个发送缓冲区,我们可以使用SO_SNDBUF套接字选项来更改该缓冲区的大小。当某个应用进程调用write时,内核从该应用进程的缓冲区中复制所有数据到(或是应用程序的缓冲区大于套接字的发送缓冲区,或是套接字的发送缓冲区中已有其他数据),该应用进程将被投入睡眠... 阅读全文

posted @ 2013-07-22 12:30 胡永光 阅读(124) 评论(0) 推荐(0) 编辑

UNIX网络编程——分析一帧基于UDP的TFTP协议帧

摘要: 下图是UDP的段格式: 相比TCP段格式,UDP要简单得多,也没啥好说的,需要注意的是UDP数据长度指payload加上首部的长度。下面分析一帧基于UDP的TFTP协议帧:以太网首部0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a... 阅读全文

posted @ 2013-07-22 11:56 胡永光 阅读(94) 评论(0) 推荐(0) 编辑

UNIX网络编程——网络层:IP

摘要: 一、IP数据报格式 IP数据报格式如下: 版本:IP协议版本号,长度为4位,IPv4此字段值为4,IPv6此字段值为6 首部长度:以32位的字为单位,该字段长度为4位,最小值为5,即不带任何选项的IP首部20个字节... 阅读全文

posted @ 2013-07-22 11:37 胡永光 阅读(139) 评论(0) 推荐(0) 编辑

UNIX网络编程——TCP连接的建立和断开、滑动窗口

摘要: 一、TCP段格式: TCP的段格式如下图所示: 源端口号与目的端口号:源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。 序号:序号表示在这个报文段中的第一个数据字节序号。 ... 阅读全文

posted @ 2013-07-22 11:36 胡永光 阅读(137) 评论(0) 推荐(0) 编辑

UNIX网络编程——TCP/IP简介

摘要: 一、ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,共七层,如下图: ... 阅读全文

posted @ 2013-07-22 11:28 胡永光 阅读(150) 评论(0) 推荐(0) 编辑

导航