linux网络编程
1.网络基础
- 网络应用程序设计模式
C/S
- client/sercver- 优点:1.协议选用灵活,2.可以缓存数据
- 缺点:用户安全,开发工作量大,调试困难
B/S
- browser/server- 优点:跨平台
- 缺点:只能使用
http
- 协议概念
- 规则:数据传输和数据解释的规则
- 典型协议:
TCP/UDP
HTTP
FTP
IP
ARP
- 分层模型
- 7层模型 -
OSI
- 物 – 物理层(双绞线,光纤)
- 数 – 数据链路层(数据的传输和错误检测)
- 网 --网络层(为数据包选择路由)
- 传 --传输层(提供端对端的接口tcp/udp)
- 会 --会话层(解除或建立与别的结点的联系)
- 表 --表示层(数据格式化,代码转换,数据加密)
- 应 --应用程(文件传输,电子邮件,文件服务,虚拟终端)
- 4层模型 -
TCP/IP
:- 网络接口层
- 网络层
- 传输层
- 应用层
- 协议模式—数据包的封装思想
- 以太网帧格式 – 借助mac地址完成数据报传递
- arp数据宝 – 根据IP获取mac地址
IP
段格式:- 4位版本:ipv4,ipv6
- 8位生存时间(TTL):最多能经过多少跳
- 32位源IP地址:数据发送端地址
- 32位目的IP地址:数据接收端地址
udp
数据包格式- 16位源端口
- 16位目的端口
tcp
数据包格式- 16位源端口
- 16位目的端口
- 32位序号
- 32位确认序号
- 6个标志位
- 16位滑动窗口
- 以太网帧格式 – 借助mac地址完成数据报传递
- 数据的发送和接受
tcp,udp
传输层协议tcp
:面向连接的安全的流式传输协议- 连接的时候,进行3次握手
- 数据发送的时候,会进行数据确认
- 数据丢失之后,会进行数据重传
udp
:面向无连接的不安全的报式传输- 连接的时候不会握手
- 数据发送后不再管(丢失则全丢)
socket
编程- 什么是
socket
- 网络通信的函数接口
- 封装了传输层协议
tcp
udp
- 浏览器 -
http
- 封装的是浏览器
- 套接字概念
- IP地址:定位一台主机
- 端口号:定位一个进程,16位,最大可以为
65535
IP+port
:e.g.127.0.0.1:8080
socket
编程- 读写操作:
read/write
- 文件描述符fd:
socket
创建成功,得到一个文件描述符fd
;fd
操作的是一块内存缓冲区 - 也会有阻塞现象
- 文件描述符fd:
- 读写操作:
- 网络字节序:
- 大端:
- 小端:
- 什么是