- 2
- 0
- 约4.11千字
- 约 11页
- 2016-10-18 发布于江西
- 举报
UNIX SOCKET编程简介38821new.doc
/tarius.wu/articles/434.html
1 . Layered Model of Networking
Socket 编程的层次模型如下图所示,
最上面是应用层,应用层下面的是 SOCKET API 层,再下面是传输层和网络层…… 实际上, Sockets API 层并不是一个真正定义的网络层次,但却很好的描述了 Socket 编程所处的位置和所扮演的角色。
TCP 状态转换图
2 .什么是 SOCKET ?
简单的, Socket 可以被定义描述为两个应用通信通道的端点。一个 Socket 端点可以用 Socket 地址来描述, Socket 地址结构由 IP 地址,端口和使用协议组成( TCP or UDP )。
3 . Socket 地址结构
网络中以主机 IP 、端口以及使用的协议表明一个网络应用。 UNIX Socket 将它们组成一个结构,统称为 SOCKET 地址结构。
3.1? IPv4 对应的 SOCKET 地址结构
通常也称为“网际 SOCKET 地址结构”,以“ socketaddr_in ”命名,定义在头文件 netinet/in.h 中。
所涉及到的数据类型:
3.2? IPv6 对应的 SOCKET 地址结构
3.3 ? 通用地址结构
当地址结构作为传递给任何一个 SOCKET 函数的参数时,任意一个 Socket 函数必须能处理每一种地址结构,为了解决这个问题,提出了使用通用套接口地址结构。当任何一个地址结构要作为指针参数传到套接口函数时,必须要显示转化为通用地址结构。
在 IPv4 应用中,使用的通用地址结构为 struct sockaddr, 定义在 sys/socket.h 中,
例如:
在 IPv6 中,提出了一种新的通用地址结构: struct sockaddr_storage 定义在netinet/in.h中。
struct sockaddr struct sockaddr_storage 的区别
!--[if !supportLists]--a.!--[endif]--struct sockaddr_storage能提供严格的结构对齐
!--[if !supportLists]--b.? !--[endif]--struct sockaddr_storage能容纳系统支持的更大的地址结构
3.4 ?Socket
4 . Client/Server Model
Client/Server 的网络通信模型是使用最广最为基础的通信模型。在 Socket API 环境,其应用可以归纳为:
TCP 链接建立
根据 TCP/IP 协议,函数 connect() 激发 TCP 的三路握手过程。
客户端给服务器一个 SYN(J) 信号,服务器返回一个 ACK(J+1); 然后服务器给客户端一个 SYN(K), 客户端也同样给服务器一个 ACK(K+1) ,这样就算 connect 成功。
注意:服务器返回的 SYN(K) 和 ACK(J+1) 是放在同一个分节中发给客户端的,因此链路在建立连接时只用了三个分节,故称为三路握手。
TCP 链接终止
TCP 用三个分节建立一个链接,而终止连接时需要四个分节。原因在于被动关闭链接一方需要关闭处理时间,因此 ACK 和 FIN 不能同时发给主动关闭一方。
主动关闭一方在收到 ACK 后,在等待被动关闭方发 FIN 消息这一状态称为处于 TIME_WAIT 状态。
5 Socket API 描述
5.1 创建套接字—— socket 函数
应用程序在使用套接字前,必须拥有一个套接字,系统调用 socket ()向应用程序提供
创建套接字的手段,其调用格式如下:
参数 family 指定通信发生的区域, UNIX 系统支持的地址族有: AF_UNIX,AF_INET,AF_NS 等,而 DOS 、 WINDOWS 中仅支持 AF_INET ,它是网际网区域。因此,地址族与协议族相同。
参数 type 描述要建立的套接字的类型。参数 protocol 说明该套接字使用的特定协议,如果调用者不希望特别指定使用的协议,则置为 0 ,使用默认的连接模式。根据这 3 个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号。因此, socket ()系统调用实际上指定了 协议 。
5.2 指定本地址—— bind 函数
一个套接字用 socket ()创建后,存在一个名字空间(地址族),但它没有被命名。 Bind ()将套接字地址(包括本地主机地址和本断口地址)与所创建的套接字号联系起来,即将,名字赋予套接字,以指定本地半相关。其调用格式如下:
参数 socke
您可能关注的文档
- 思想政治必修三93457new.doc
- 国家英语四级词汇总表(免费下载)new.doc
- 第五节 论证类试题及答题方法.doc
- 形势与政策一.doc
- 大学英语4作业4new.doc
- TOPIC初级之终结语尾new.doc
- 操作系统课程设计63619new.doc
- (必修5)第四单元单元检测题.doc
- 高一 Unit 10 同步试题.doc
- 合理有效的使用中小学体育教材new.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)