socket套接字及TCP的实现框架

socket套接字

集中常见的网络编程接口

Berkeley UNIX操作系统定义了一种API,它又称为套接字接口(socket interface)

微软公司在其操作系统中采用了套接字接口API,形成了一个稍有不同的API,并称之为windows Socket

AT&T为其UNIX系统V定义了一种API,简写为TLI(Transport Layer Interface)

socket套接字常用函数

创建套接字函数:

int socket(int domain,int type,int protocol);

绑定通信结构体函数

int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);

监听套接字函数

int listen(int sockfd,int backlog);

处理客户端发起的连接,生成新的套接字

int accept(int socketfd,struct sockaddr *addr,socklen_t *addrlen);

向服务器发起连接请求

int connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen);

三元组(IP地址,端口,协议)

IP地址:标识计算机

端口号:标识计算机当中的进程

协议:指定数据传输的方式

套接字的作用如下图所示:socket套接字及TCP的实现框架_第1张图片

 地址族结构体

常用地址族结构体

struct sockaddr {

        sa_family_t sa_family;

        char        sa_date[14]

}

地址族结构体(设置完毕后需强制转化成常用地址族结构体)

struct sockaddr_in {

        sa_family_t sin_family;

        in_port_t sin_port;

        struct in_addr sin_addr;

}

struct sockaddr{

        uint32_t s_addr;

}

IPV6地址族结构体

socket套接字及TCP的实现框架_第2张图片

socket套接字及TCP的实现框架_第3张图片 套接字类型

流式套接字(SOCK_STREAM)提供可靠的、面向连接的通信流;它使用TCP,从而保证数据传输的可靠性和顺序性

数据报套接字(SOCK_DGRAM)定义了一种不可靠、面型无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP

原始套接字(SOCK_RAW)允许直接访问底层协议,如IP或ICMP,它功能强大但使用较为不便,主要用于协议开发。

各类套接字使用方式

socket套接字及TCP的实现框架_第4张图片

套接字也是一种文件,可以被读写和创建等操作

socket套接字及TCP的实现框架_第5张图片 套接字实现过程

1、创建套接字

2、数据传送

3、连接释放

TCP框架实现

TCP实现通信的过程

创建socket

socket套接字及TCP的实现框架_第6张图片

 socket套接字及TCP的实现框架_第7张图片

 socket套接字及TCP的实现框架_第8张图片

socket套接字及TCP的实现框架_第9张图片 

socket套接字及TCP的实现框架_第10张图片 

socket套接字及TCP的实现框架_第11张图片 

socket套接字及TCP的实现框架_第12张图片 

 

 

 

你可能感兴趣的:(tcp/ip,网络协议,网络)