37.linux网络编程--网络基础

一.网络的历史

提到网络我们就会知道说的是TCP/IP协议栈。

它的由来我们只做了解即可。

他们是冷战的产物,苏联在和美国互相秀肌肉的时候,美国提出了建立国防部高级研究计划署的一个机构,然后这个机构在1968年提出了“资源共享计算机网络”,其实就是想让他们的电脑互联,有点像搞个局域网的样子,这个网络叫“啊帊网”也就是互联网的雏形。

但是此时的网络肯定有很多的问题。后来有两个大牛Robert Kahn 和Vinton Cerf两人合作为ARPAnet开发了新的互联协议。1974年两人正式发表了第一份TCP协议说明。

那为什叫TCP/IP协议栈??就跟火影忍者为什么不叫水影忍者一样。

  • 用来检测网络传输中差错的传输控制协议TCP(可靠传输)
  • 专门负责对不同网络进行互联的互联网协议IP

产生了TCP/IP协议栈他的历史我们就先说这么多。

 

二.网络的分层

无论是我们要说的网络协议栈,还是之后linux系统等他们都是采用了分层的结构。分层的思想可以使复杂的事情简单化,逻辑更清楚,更容易维护。

  1. 每一层实现不同的功能,对上层的数据做透明传
  2. 每一层向上层提供服务,同时使用下层提供的服务

说起网络的分层,都会说到OSI 7层模型,他是一个理想化的模型,尚未有完整的实现。现在的网络协议栈都是基于这个这个模型做的。我们工业标准常用的模型使四层模型。

37.linux网络编程--网络基础

37.linux网络编程--网络基础

37.linux网络编程--网络基础

3.每一层之间都有统一的接口与上层或者下层交互。

4.网络接口与物理层 主要屏蔽硬件差异。(以太网 WiFi GPRS等,不同的硬件要有不通过的驱动)

5.交换机于OSI模型的关系:

二层交换机偏硬件(数据链路层的交换),三层交换机偏软件(网络层的一个交换)

 

三. 网络各层经典协议

37.linux网络编程--网络基础

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
:用传输音视频的协议(安防监控)

 

四.网络的封包和拆包

 

37.linux网络编程--网络基础

完整的TCP/IP数据包(字节为单位)

37.linux网络编程--网络基础

MTU值(最大传输单元)和网络类型相关。

mss值(静态数据)和线路系统特性相关

类似于我们之前说的发快递和收快递的过程。

 

下面是从网上找的我认为非常好的一个图片:

 

37.linux网络编程--网络基础

注:所有内容只做学习复习用,如有侵权请联系我。