Socket编程

文章目录

  • 前言
  • 一、应用编程接口
  • 二、Socket API概述
    • 1.进程寻址
    • 2.Socket抽象
    • 3.地址结构
  • 三、Socket API函数
  • 总结


前言

网络程序设计接口
Socket编程_第1张图片
我们可以在相关层进行网络编程,socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信


提示:以下是本篇文章正文内容

一、应用编程接口

应用编程接口API: 就是应用进程的控制权和操作系统的控制权进行转换的一个系统调用接口

Socket编程_第2张图片
这一点感觉有点像操作系统的用户级线程与内核级线程类似的,为了使应用层的应用进程可以和相邻层(传输层)传递数据,需要一个接口,即API

典型的应用编程接口

(1)套接字接口(socket interface),简称套接字(socket) ----UNIX 操作系统

(2)Windows Socket Interface, 即WINSOCK -----Windows

(3)Transport Layer Interface,即TLI ------AT&T UNIX 系统 V

二、Socket API概述

最初设计,是面向BSD UNIX-Berkley 和 TCP/IP协议栈接口,目前,绝大多数操作系统都支持

Socket 是 Internet网络应用最典型的API接口,是应用进程间通信的抽象机制
Socket编程_第3张图片
多数应用程序是由通信进程对组成的,进程对中的两个进程互相发送报文,
一个进程通过软件接口(API)向网络接收报文,可以把看作进程是房子,API是门

1.进程寻址

寻址应用层客户应用进程和服务器应用进程
Socket编程_第4张图片
1.标识通信端点(对外):IP地址+端口号 (16位整数)

2.操作系统/进程如何管理套接字(对内):套接字描述符(socket descriptor) 小整数

对于客户机来说想找到服务器应用层的某个进程通过IP地址+端口号寻址,
对于服务器主机想要找到自己某个应用层进程通过套接字描述符

2.Socket抽象

类似于文件的抽象,当应用进程创建套接字时,操作系统分配一个数据结构存
储该套接字相关信息,操作系统并返回套接字描述符
Socket编程_第5张图片
每一个进程都有一个Socket描述符表,存储着该该套接字相关信息,操作系统维护一个套接字描述符表,存储的是指向套接字数据结构的指针

3.地址结构

sockaddr_in结构体:

struct sockaddr_in
{
     
	u_char sin_len; /*地址长度 */
	u_char sin_family; /*地址族(TCP/IP: AF_INET) */
	u_short sin_port; /*端口号 */
	struct in_addr sin_addr; /*IP地址 */
	char sin_zero[8]; /*未用(置0) */
}

当使用TCP/IP协议簇的网络应用程序声明端点地址变量时,使用结构sockaddr_in

地址族:为了适应不同协议的变化,引入了地址族,其在TCP/IP下使用的值为AF_INET

三、Socket API函数

总结

提示:这里对文章进行总结:

你可能感兴趣的