Lniux网络通信一(基础知识点+Socket模型)
○ C/S-client/server
优点: 1. 协议选用灵活 2. 可以缓存数据
缺点: 1. 对用户安全构成威胁 2. 开发工作量大, 调试困难
○ B/S - browser/server
优点: 跨平台
缺点: 只能使用http
○ 7层模型 - OSI:
物 -- 双绞线, 光纤
数 -- 数据的传输和错误检测
网 -- 为数据包选择路由
传 -- 提供端对端的接口 tcp/udp
会 -- 解除或建立与别的节点的联系
表 -- 数据格式化,代码转换,数据加密
应 -- 文件传输,电子邮件,文件服务,虚拟终端
优点: 1. 协议选用灵活 2. 可以缓存数据
缺点: 1. 对用户安全构成威胁 2. 开发工作量大, 调试困难
○ B/S - browser/server
优点: 跨平台
缺点: 只能使用http
○ 7层模型 - OSI:
物 -- 双绞线, 光纤
数 -- 数据的传输和错误检测
网 -- 为数据包选择路由
传 -- 提供端对端的接口 tcp/udp
会 -- 解除或建立与别的节点的联系
表 -- 数据格式化,代码转换,数据加密
应 -- 文件传输,电子邮件,文件服务,虚拟终端
○4层模型 - TCP/IP:
网络接口层HTTP HTTPS FTP SFTP
网络层 IP
传输层 tcp/udp
应用层ARP/ARAP
服务器端-2个文件描述符
创建套接字
- 监听的
int
lfd = socket();
lfd和本地的IP和端口绑定
bind(lfd,
(struct sockaddr*)
&serv,
sizeof(serv));
struct
sockaddr_in serv;
设置监听
listen(lfd,
backlog);
等待并接收连接请求
int
cfd = accept(lfd,
&client, &len);
struct
sockaddr_in client;
socklen_t
len = sizeof(client);
读数据:
read(cfd,
buf, sizeof(buf));
发送数据
write(cfd,
"xxx\", len);
关闭文件描述符
close(cfd);
close(lfd);
客户端
- 只有一文件描述符
创建套接字
int
fd = socket();
连接服务器
connect(fd,
&servaddr,
sizeof(servaddr));
发送数据:
write(fd,
buf, strlen(buf));
接收数据
read(fd,
buf, sizeof(buf));
关闭连接
close(fd);