1. 首页
  2. 生活常识
  3. unix系统网络连接设置(UNIX网络通信详解)

unix系统网络连接设置(UNIX网络通信详解)

简介:关于unix系统网络连接设置(UNIX网络通信详解)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于生活常识技术大全及相关资讯,可以多多关注茶馆百科网。

一、网络协议

国际标准化组织(ISO)定义了网络协议的基本框架,称为OSI模型。OSI模型包括应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。OSI模型过于复杂,尚未在实际中得到应用。

TCP/IP协议模型将OSI的七层协议模型简化为四层,使其更容易实现和使用。TCP/IP协议模型包括应用层、传输层、网络层、网络接口层。

TCP/IP与OSI模型的对应关系如下:

二、插座插座

它是一个可以与网络通信的内核对象。它有一个唯一的标识符,称为套接字描述符。与文件描述符类似,它也可以使用读/写/关闭。

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

准备通讯地址:

基本通信地址

struct sockaddr

本地通信地址

struct sockaddr_un

网络通信地址

struct sockaddr_in

在将准备好的通信地址传递给函数之前,通常必须将其转换为基本通信地址。

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

//函数:socket对象关联通信地址

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

//功能:连接通信目标

//socketaddr:目的地址

三、网络通信数据存储方式

个人计算机系统的数据存储方式有大端和小端两种。网络通信需要大端数据,必须将大端数据转换为大端数据。

uint32_t htonl(uint32_t hostlong);

//功能:将32位主机字节顺序转换为32位网络字节顺序

uint16_t htons(uint16_t hostshort);

//功能:将16位主机字节顺序转换为16位网络字节顺序

uint32_t ntohl(uint32_t netlong);

//功能:将32网络字节顺序转换为32主机字节顺序

uint16_t ntohs(uint16_t netshort);

//功能:将16位网络字节顺序转换为16位主机字节顺序

生成端口号

端口号为16的无符号整数

uint16_t htons(uint16_t hostshort);

生成ip地址

in_addr_t inet_addr(const char *cp);

//功能:将点分十进制形式的字符串ip地址转换为32位无符号整数

char *inet_ntoa(struct in_addr in);

//功能:将32位网络字节顺序ip地址转换为点分十进制格式的字符串ip地址

四、网络通信(UDP)

进程A:创建套接字对象—准备地址—绑定—接收数据和接收地址—从源返回数据—关闭套接字

进程B:创建套接字对象—准备地址—发送数据到目的地址—接收数据—关闭套接字

0

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

//功能:接收数据并获取发送方地址

//addrlen:需要获取的src_addr的长度

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);

//功能:向指定目标发送数据

五、网络通信(TCP)

面向连接的网络通信,在通信过程中始终是连接的,这种通信类似于电话,可以保证安全可靠,数据不会丢失,但与UDP相比传输速度略低。

进程A:创建套接字—准备地址—绑定—监听(设置队列长度)—等待连接—通信—关闭。

进程B;创建套接字-准备地址-连接-通信-关闭

int listen(int sockfd, int backlog);

//功能:设置socket队列的最大数目

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

//功能:等待其他主机与当前套接字建立连接。

//返回值:建立连接的描述符,用于以后的通信

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

//功能:连接通信目标

//socketaddr:目的地址

ssize_t recv(int sockfd, void *buf, size_t len, int flags);

//功能:用于网络通信的特殊数据接收

//flag: 0

//1不阻塞

//如果返回值为-1,连接断开,循环结束

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

//功能:网络通信的数据发送

//如果返回值为-1,连接断开,循环结束

本文主要介绍了关于unix系统网络连接设置(UNIX网络通信详解)的相关养殖或种植技术,生活常识栏目还介绍了该行业生产经营方式及经营管理,关注生活常识发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解生活常识技术怎么管理的要点,是您生活常识致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1495165.html