一:网络通信的原理

1.1 OSI七层协议

  互联网协议按照功能不同分为OSI七层或TCP/IP五层或TCP/IP四层

 

 

1.1.1 物理层

  物理层主要传输的是电信号,发送高低电压,高电压对应数字为1,低电压对应数字为0

1.1.2 数据链路层

   物理层只是发送单纯的0或1电信号,但这样是没有意义的,必须规定电信号多少组一位,每组有什么功能和意义,这样就出现了以太网协议(Ethernet)。

  Ethernet规定:

  ● 一组电信号构成一个数据包,叫做‘帧’

  ● 每个数据帧分为:报头head与data两部分  

 

前导字符 目的MAC地址 源MAC地址 类型 IP头部 TCP头部 数据 帧校验

  ● 目的MAC地址,6个字节

  ● 源MAC地址,6个字节

  ● 数据类型,6个字节

  ● data数据包,最短46字节,最长1500字节

  MAC地址是配置在网卡上的唯一地址,通常由12为16进制数表示(前六位厂商编号,后六位是流水线号)

1.1.3 广播

  同一网络内的主机就可以基于MAC地址的广播进行通信

2.1 网络层

  对不在同一局域网中的计算机通信,要通过IP地址,通过路由的方式进行通信。

2.1.1 IP协议

  ● 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示

  ● 范围0.0.0.0-255.255.255.25

  ● 一个ip地址通常写成四段十进制数,例:172.16.10.1

2.1.2 IP地址的组成部分

  ● 网络部分:标识子网

  ● 主机部分:标识主机

  IP地址与子网掩码互与的过程可以确认子网范围,以及子网中的主机。

2.1.3 IP数据包

  IP数据包分为head与data两部分,head:长度为20到60字节;data:最长为65515字节。以太网数据包数据包部分只有1500字节,因此,如果数据包超过1500字节,就需要分割成几个以太网数据包,分开发。

2.1.4 ARP协议

  ARP协议是由IP地址解析MAC地址。工作过程为:首先通过IP地址和子网掩码区分出自己所处的子网。再分析子网是否是同一子网,如果不是同一子网,则通过ARP获取的是网关MAC。最后这个包会以广播的方式发送到局域网中,所有主机收到拆开数据包,如果是自己的IP,则返回MAC地址。

2.2 传输层

  通过网络层与数据链路层找到唯一一台主机后,要如何精确找到应用程序,因为数据间的通信是通过应用程序实现的。这就需要传输层来实现。

  功能:建立端口到端口之间的通信,范围:0~65535,0~1023为系统占用的端口

2.2.1 TCP协议

  TCP协议是可靠传输,TCP数据包没有长度限制,理论上可以无限的长,但为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,一确保单个数据包不必再分割。

  TCP的三次握手和四次挥手

  

  TCP传输的建立过程有三次握手,四次挥手:

  建立链接:

  (1)Client首先发送SYN seq = x,处于SYN_SENT状态。Server首先处于LISTEN状态。Server段收到消息后处SYN_RCVD状态。

  (2)服务端发送ACK = x+1表示接收到Client发送的请求。并发送一个SYN与seq = y,来请求与Client建立链接。Client处于ESTABLISHED状态。

  (3)客户端回发ACK = y+1表示同意与服务端建立链接,Server处于ESTABLISHED状态。

  断开链接:

  (1)Client首先发送FIN与seq表示要与Server端断开链接,Server端发送ACK表示与Client断开链接;

  (2)服务端发送FIN与seq表示要与Client断开链接,Client回复Server端ACK表示与Server断开链接。

2.3 应用层

  应用层使用的都是应用程序,应用层由一系列协议,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

2.4 网络通信的整体流程

  (1)应用程序产生要通信的数据,加上应用层的协议报头

  (2)应用层发送给传输层,传输层加入TCP/UDP报头

  (3)传输层发送给网络层,网络层加入TCP/IP协议

  (4)网络层在传给数据链路层,数据链路层形成数据帧

  (5)传输层再把数据帧转换为电信号二进制,发送给对方