(1)网络协议被分为5层
1)应用层:直接为用户的应用进程提供服务
HTTP协议,FTP协议,DNS,POP3,SNMP,Telnet
2)运输层(传输层):负责向两个主机中进程之间的通信提供服务 (基于TCP/UDP)
(1)传输控制协议TCP(Transmission Control Protocol):
1)数据传输的单位是报文段
2)面向连接的,可靠
3)流量控制(即发送方/接收方速率匹配)
4)包括了应用层报文划分为短报文,并提供拥塞控制机制
(2)用户数据包协议UDP(User Datagram Protocol):
1)数据传输的单位是用户数据报
2)无连接的,不可靠
3)没有流量控制
4)也没有拥塞控制
3)网络层:负责将被称为数据包(datagram)的网络层分组从一台主机移动到另一台主机 (基于IP)
4)链路层:因特网的网络层通过源和目的地之间的一系列路由器路由数据报 (基于MAC)
5)物理层:任务就是透明地传送比特流
(2)函数:
int socket(int domain, int type,int protocol); //此函数用于创建一个套接字
int bind(int sockfd, struct sockaddr *my_addr, int addrlen); //函数用于将地址绑定到一个套接字
int listen(int sockfd,int backlog); //此函数宣告服务器可以接受连接请求
int accept(int sockfd, struct sockaddr *addr,int *addrlen); //server,使用此函数获得连接请求,并且建立连接
int connect(int sockfd, struct sockaddr * serv_addr,int addrlen); //client, 用connect建立一个连接
ssize_t send(int sockfd, const void *buf, size_t len, int flags); //用于TCP连接
ssize_t recv(int sockfd, void *buf, size_t len, int flags); //用于TCP连接
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, //通常用于无连接套接字
struct sockaddr *src_addr, socklen_t *addrlen);
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, //通常用于无连接套接字
const struct sockaddr *dest_addr, socklen_t addrlen);
参考:韦东山Linux教程
标签:UDP,struct,int,TCP,addrlen,Linux,sockfd,连接 From: https://www.cnblogs.com/charlie12345/p/17681098.html