Lniux网络通信一(基础知识点+Socket模型)

C/S-client/server
优点: 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


tcp通信流程

Lniux网络通信一(基础知识点+Socket模型)

服务器端-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);