37.linux网络编程--网络基础
一.网络的历史
提到网络我们就会知道说的是TCP/IP协议栈。
它的由来我们只做了解即可。
他们是冷战的产物,苏联在和美国互相秀肌肉的时候,美国提出了建立国防部高级研究计划署的一个机构,然后这个机构在1968年提出了“资源共享计算机网络”,其实就是想让他们的电脑互联,有点像搞个局域网的样子,这个网络叫“啊帊网”也就是互联网的雏形。
但是此时的网络肯定有很多的问题。后来有两个大牛Robert Kahn 和Vinton Cerf两人合作为ARPAnet开发了新的互联协议。1974年两人正式发表了第一份TCP协议说明。
那为什叫TCP/IP协议栈??就跟火影忍者为什么不叫水影忍者一样。
- 用来检测网络传输中差错的传输控制协议TCP(可靠传输)
- 专门负责对不同网络进行互联的互联网协议IP
产生了TCP/IP协议栈他的历史我们就先说这么多。
二.网络的分层
无论是我们要说的网络协议栈,还是之后linux系统等他们都是采用了分层的结构。分层的思想可以使复杂的事情简单化,逻辑更清楚,更容易维护。
- 每一层实现不同的功能,对上层的数据做透明传
- 每一层向上层提供服务,同时使用下层提供的服务
说起网络的分层,都会说到OSI 7层模型,他是一个理想化的模型,尚未有完整的实现。现在的网络协议栈都是基于这个这个模型做的。我们工业标准常用的模型使四层模型。
3.每一层之间都有统一的接口与上层或者下层交互。
4.网络接口与物理层 主要屏蔽硬件差异。(以太网 WiFi GPRS等,不同的硬件要有不通过的驱动)
5.交换机于OSI模型的关系:
二层交换机偏硬件(数据链路层的交换),三层交换机偏软件(网络层的一个交换)
三. 网络各层经典协议
3.1网络接口与物理层(主要屏蔽硬件差异,各种物理接口)
MAC地址: 48位全球唯一,网络设备的身份标识
ARP/RARP: 地址解析协议
ARP: IP地址----->MAC地址
RARP: MAC地址--->IP地址
ARP欺骗也是黑客攻击的一种常用方法
PPP协议:拨号协议
GPRS/3G/4G
3.2网络层(实现物理地址与逻辑地址的转换)
IP地址
IP: Internet protocol(分为IPV4和IPV6)
ICMP: Internet控制管理协议,ping命令属于ICMP
IGMP: Internet分组管理协议,广播、组播
3.3传输层(应用层程序间的通讯)
TCP: (Transfer Control protocol,传输控制协议) 提供面向连接的,一对一的可靠数据传输的协议
即数据无误、数据无丢失、数据无失序、数据无重复到达的通信
UDP: (user Datagram Protocol, 用户数据报协议): 提供不可靠,无连接的尽力传输协议
是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
SCTP: 是可靠传输,是TCP的增强版,它能实现多主机、多链路的通信(军方应用)
3.4应用层(很多协议支持不同应用)
网页访问协议:HTTP/HTTPS
邮件发送接收协议: POP3(收)/SMTP(发) 、IMAP(可接收邮件的一部分)
FTP, 文件传输协议
Telnet/SSH(加密登录): 远程登录
嵌入式相关:
NTP: 网络时钟协议
SNMP: 简单网络管理协议(实现对网络设备集中式管理)
RTP/RTSP:用传输音视频的协议(安防监控)
四.网络的封包和拆包
完整的TCP/IP数据包(字节为单位)
MTU值(最大传输单元)和网络类型相关。
mss值(静态数据)和线路系统特性相关
类似于我们之前说的发快递和收快递的过程。
下面是从网上找的我认为非常好的一个图片:
注:所有内容只做学习复习用,如有侵权请联系我。