1,实现网络通信需要哪些支持
- 通信设备:
网卡:pc机自带
交换机,路由器
电缆,光纤,基站
- 通信协议:
操作系统自带协议栈(Linux的特点:丰富的协议)
裸机开发需要独立的协议栈
套接字包括,流套接字、数据报套接字、原始套接字
套接字传输的本质:传输层的文件描述符
简单的网络通信只需要学会使用系统API
2,什么是通信协议,以及其作用
通信双方确定一种数据形式,以及通过什么形式来发送
3,TCP/IP协议栈
OSI七层网络模型,Linux四层网络模型
OSI七层网络模型 | LinuxTCP/IP四层概念模型 | 对应的网络协议 | ||||
---|---|---|---|---|---|---|
|
|
| ||||
|
| |||||
|
| |||||
|
|
| ||||
|
|
| ||||
|
|
| ||||
|
|
- 物理层:通信介质的信号到数字信号(二进制01001)转换
- 数据链路层:局域网之间计算机通信,通过MAC地址(物理网卡)通信
- 网络层:IP地址及路由(通过公网IP来访问全世界)选择
- 传输层:TCP UDP端口
- 会话层:控制发包的数据,建立,管理,维护会话
- 表示层:文件格式,提供数据格式转换
- 应用层:为应用程序提供服务,访问网络服务的接口
协议分层的好处:
- 各层之间是独立的
- 灵活性好
- 结构上可以分开
- 易于维护
- 能促进标准化工作
- 协议栈实现数据的压缩加密和解压解密
IP地址:实质上是32位的二进制数(00000000.00000000.00000000.00000000)100.4.5.6
公网IP:
a类:1.0.0.1~126.255.255.254
b类:128.0.0.1~191.255.255.254
c类:192.0.0.1~223.255.255.254
d类:224.0.0.1~239.255.255.254
e类:240.0.0.1~255.255.255.254(用于科研)
私网(局域网):
a类:10.0.0.0~10.255.255.255
b类:172.16.0.0~172.31.255.255
c类:192.168.0.0~192.168.255.255
由于IP的地址的供求逐渐紧张,所以出现了IPV6
一些协议的作用:
SMTP:做邮件发送
DNS:解析域名
IP:定义ip地址解析协议
DNS:讲网址翻译成IP地址
http:实现网页
TCP协议
- TCP报文=TCP头部+TCP数据部分。同样,IP数据包也包含tcp数据包或udp数据包。其中,我们经常需要关注的是TCP头部。
- 源端口和目的端口:各占 2 字节.端口是传输层与应用层的服务接口.传输层的复用和分用功能都要通过端口才能实现。
- 序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。
- 确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。
- ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
- RST:当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
- SYN:同步 SYN = 1 表示这是一个连接请求或连接接受报文
- FIN:用来释放一个连接.FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接
一些检验方式:
1,奇偶检验
2,bcc异或检验
3,crc循环冗余校验
4,MD5校验和数字签名
5,海明码校验
TCP在局域网中传输数据长度-1518-18-20-20=1460bit,广域网传输不限定大小,应为超过大小时会自动进行拆包
UDP协议
UDP:用户数据报协议。是一种无连接的传输层协议,不会创建连接,所以是一种不可靠的协议。它的优点为速度快,缺点为会丢包、会出错。
- 无连接不可靠
- 局域网:UDP传送数据的最大长度=1518-18-20-8=1472bit
广域网:UDP传送数据的最大长度=65535-IP(头20)-UDP(8)=65507bit。(使用sendto函数发送超过65507会返回错误- 协议的特点:
无连接,减少了开销和发送数据的延迟
尽最大努力进行交互(不保证可靠交互),主机不需要维持复杂的连接状态表
面向报文:发送方的UDP对应用程序交下的报文,在添加首部之后就向下交付给IP层,既不拆分也不合并
没有阻塞控制
支持一对一,多对一和多对多交互通信
由于UDP协议的特点,所以UPD协议的使用场景如下:
- 不需要可靠机制,只需要速度快。
- 流媒体、多媒体游戏、IP电话
- 资源消耗小
TCP协议与UDP协议对比
根据是否连接、传输可靠性、应用场景、速度,连接对象个数,传输方式,前部开销这几个特点,TCP协议和UDP协议有以下几点不同。
特征点 | TCP | UDP |
---|---|---|
是否连接 | 面向连接 | 面向非连接 |
传输可靠性 | 可靠 | 会丢包,不可靠 |
连接对象个数 | 一对一 | 一对一、一对多 |
传输方式 | 发送数据需要建立连接(面向有连接) | 发送数据不需要建立连接(面向无连接) |
前部开销 | 使用资源较多 | 比TCP节省资源 |
适用场景 | 数据量很大,防止丢包 | 数据量小 |
速度 | 慢 | 快 |
常见的应用层协议中:
基于TCP协议的有:HTTP、HTTPS、FTP。
基于UDP协议的有:DNS(域名解析协议)等。