目录
【计算机网络概述】
网络节点:路由器和交换机组成
路由:网络通信路径
1.分组交换
同一个分组的系统中,数据是等分的,每一组的数据是等长的
每一个分组携带一个首部(首部携带分组位置,作用是为了数据能够按顺序重组)
首部包含了:分组在原数据中的顺序、源主机、接受主机的信息(可以看成人与人之间按顺序写信,向一个人假如写了三封信,那么信上面就应该有阅读信息(分组在原数据的顺序)、发送人(源主机)、接收人(接受主机))
2.存储转发
当一个节点接收到数据之后,会首先存储起来进行判断,分析报文头部信息,然后通过获取到的目的主机地址选择合适的节点转发出去
每一个节点接收到的分组都是没有顺序的,只有在到达接受的主机的时候,才会按照头部的顺序重新组装。
如下图所示,假如B节点接受到了一个分组,那么它就会先存储起来,分析首部信息,寻找目的主机,然后选择合适的节点进行发送。
存储转发具有以下特点
1.以分组作为传输单位,也就是以一个报文分成若干份的等大数据作为一个单位
2.独立选择转发路由,每个节点解析完首部之后,通过路由传送分组路径不是固定的
3.逐段占用,动态分配传输宽带,当一段路由被占用了之后,其他节点无法使用这段路由
【TCP/IP协议】
1.网络分层结构
网络分层结构有两种情况,一种OSI/RM(Open System Interconnection Reference Model),另一种是TCP/IP(Transmission Control Protocol/Internet Protocol),前者是理论标准,后者是实际标准
OSI/RM(理论标准) | TCP/IP(实际标准) |
应用层 | 应用层 |
表示层 | |
会话层 | |
传输层 | 传输层 |
网络层 | 网络层 |
数据链路层 | 链路层 |
物理层 |
OSI/RM七层结构:
物理层:网络卡的接口类型、电流标准等
数据链路层:负责完整数据帧收发,设备的通信
网络层:负责IP报文的封装和解封装
传输层:负责端口的封装和解封装
会话层:负责数据转发、查看数据是否能够到达目的主机
表示层:将计算机识别的二进制数据转化为用户能识别的数据(图片、视频、音频)
应用层:具体应用程序的协议
TCP/IP四层结构:
链路层:负责完整的帧数据(能够完整在网络上传输的数据)收发,负责设备通信
(arp地址解析协议、rarp协议逆地址解析协议)
网络层:负责IP报文的封装和解封装,IP地址 ,负责主机通信
( IP网际协议、ICMP网络控制报文协议 )
传输层:负责端口的封装和解封装,端口区别系统的进程,进程到进程的通信
( TCP传输控制协议、UDP用户数据包协议)
应用层:具体应用程序的协议
(FTP文件传输协议、Telnet远程登录协议、HTTP超文本传输协议、TFTP简单文件传送协议、NFS网络文件系统)
链路层比如说网卡的MAC地址,链路层就是设备到设备,网络层就是IP地址的鉴别,那么就是主机到主机,传输层则是表示进程到进程。
网卡插在主机上接受到数据(物理层,数据链路层),然后识别系统ip地址(网络层),然后识别系统中接受的进程(传输层),然后转发数据(会话层),转化为可识别数据(表示层),具体应用(应用层)
2.IP协议(网际协议)
IP协议应用于网络层,负责主机到主机之间通信
特点:
1.尽最大可能将数据报文传送到目的主机
2.IP报文独立传输,互不影响
3.IP报文包括源IP和目的IP
3.TCP报文(传输控制协议)
TCP是传输层的协议(负责进程间的通信)
具有以下特点(特点均为了保证传输可靠):可靠、面向连接、序号和确认序号、排序检错、失败重传、面向大文件传输
4.UDP报文(用户数据协议)
UDP为传输层协议(负责进程与进程之间通信)
具有以下特点:不可靠、无连接、无排序检错、失败不重传、速度快、主要面向简单应答功能、广播、多播
【地址】
1.MAC地址
MAC地址就是网卡的物理地址,在理论上是全球唯一的
MAC地址包含48bit(6字节),高24bit是厂商ID,低24bit是设备ID
2.IP地址
IP地址有32bit,由两个部分组成,一个是网络ID,一个是主机ID
网络ID:IP地址中由子网掩码中1覆盖的连续位 标识IP地址在哪个网段
主机ID:IP地址中由子网掩码中0覆盖的连续位 标识IP地址在网段的具体位置
例如,一个IP地址是165.125.5.65,掩码是255.255.255.0,那么网络ID就是165.125.5,主机ID就是65
3.IP地址分类
IP至今总共分为5类,分别是A B C D E
A类地址,默认8bit的网路ID,第一位固定为0 广域网
掩码 255.0.0.0
0xxx xxxx . 0000 0000 . 0000 0000 . 0000 0000
0xxx xxxx . 1111 1111 . 1111 1111 . 1111 1111
B类地址,默认16bit的网路ID,前两位固定为10 城域网
掩码 255.0.0.0
10xx xxxx . xxxx xxxx. 0000 0000 . 0000 0000
10xx xxxx . xxxx xxxx. 1111 1111 . 1111 1111
C类地址,默认24bit的网路ID,前三位固定为110 局域网
掩码 255.0.0.0
110x xxxx . xxxx xxxx. xxxx xxxx . 0000 0000
110x xxxx . xxxx xxxx. xxxx xxxx . 1111 1111
D类地址:前四位为1110,多播地址
E类地址:前五位为11110,保留今后使用
4.回环IP地址
回环IP地址的主要功能就是测试本机的网络配置是否正常,通过 ping 这个命令加上本机的回环地址,来测试本机网络配置是否正常
5.IP地址的设置
在Linux的环境下,可以有两个手段来设置IP地址,一个是手动设置,一个是自动设置
如果想要手动设置一个IP地址,那么首先需要先ping一下,看看是否被使用,然后通过命令 ifconfig 来查看本机网络设备的名称。
如果想要自动获取IP地址,则输入以下命令
sudo dhclient
6.子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码是一个32bit由1和0组成的数值,并且1和0分别连续
作用
指明IP地址中哪些位标识的是主机所在的子网以及哪些位标识的是主机号特点
必须结合IP地址一起使用,不能单独存在
IP地址中由子网掩码中1覆盖的连续位为子网ID,其余为主机ID
很常见的子网掩码就是255.255.255.0,那么就是用这个掩码来区分IP地址中的网络ID和主机ID
【端口】
1.端口的概述
我们之前学习过Linux系统编程,其中系统中的进程是通过进程PID来确定的,但是在网络的世界中,仅仅使用进程号以及不能够满足了,因为网络可能是主机和主机之间进行通信,一个相同的进程号在两个不同的主机之间代表的进程是不相同的
TCP/IP协议采用端口标识通信的进程。端口的本质是一段内存
端口具有以下特点:
1.对于同一个系统,一个端口只能对应一个进程
2.对于同一个系统,一个进程可以对应多个端口
3.对于同一个端口,在不同系统对应不同进程
如果一个进程拥有一个端口,传输层到到端口的数据会全部被该进程接受,同样的,进程通送交传输层的数据也是通过端口发出
2.端口号
类似pid.标识一个进程;在网络程序中,用端口号(port)来标识一个运行的网络进程
端口号有以下特点:
1.端口号是无符号短整型
2.端口号表示一个网络进程
3.TCP、UDP维护各自的端口号(也就是说,TCP协议下的端口号即使和UDP协议下端口号相同,表示的也不同)
4.网络应用程序,至少占用一个端口号,也可以占用多个端口号
【数据的封装和解封装】
1.封装和解封装流程
在发送数据的时候,需要从应从层开始逐步对数据封装
在接受数据的时候,需要从联路侧开始逐步对数据解封装
2.链路层报文格式(mac报文)
3. 网络层报文(IP TCP UDP报文)
【应用层协议开发流程】
1.面向连接(TCP)
TCP(可靠、排序检错、失败重传、有确认序号)面向连接可以抽象为电话系统服务模型
面向连接的数据是可靠、有序的,每一次数据的传输都需要建立、使用、终止连接
2.面向无连接(UDP)
UDP(不可靠、无排序检错、失败不重传、无序列号)抽象为邮件分拣模型
面向无连接就像是发送信封一样,发送若干信件信息是没有排序的,电话模抽象模型,如果一方说的话不清楚,可以重新说,但是邮件不行,这就是面向无连接无法失败重传
【应用层协议开发结构】
1.c/s结构(客户端、服务器模型)
服务器:被客户端连接
服务器必须指定端口让客户端连接
客户端的连接到来,必须启动新的进程或者线程来服务客户端
服务器在完成服务后,关闭和客户端的连接
客户端:主动连接服务器
客户端给服务器发送请求
获取完请求,关闭连接
2.b/s架构(浏览器、服务器模型)
b/s架构主要应用于WebQQ、网页游戏等,重心在服务器上面