1.网络通信
网络中主机间的进程通信
2.网络划分
(1)局域网:一般来说,某个小范围组建的网络,内部可以传输数据 路由器 (2)广域网WAN :将很多局域网链接起来,组成很大范围的网络,(全球公认的广域网,通过网络运营商提供网络服务,来访问),公网 ,外网-----广域网子集
能够 ping 通,就是能够访问对应的主机
一个局域网内部可以互相访问,但多个局域网之间,如果没有使用外部网络来连接,是不能互相访问的 即使用外部的网络链接,但是基于局域网的ip是内部的才能使用,外部就不能使用
3.网络通信基础
IP地址:用来标识网络中唯一的一台主机。局域网ip是内部才能用(内部唯一,公网ip是全局唯一),不同局域网的ip可能会重复 。由网络号和主机号构成的 网络号:标识网段,保证相互连接的两个网段具有不同的标识; 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号; 格式:32位二进制的数字组成,每八位为一组分割,然后转化为相对应的十进制 特殊ip:127.0.0.1 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信 全0:代表整个局域网 全1:代表广播数据报
IP地址划分:A-E五类
A:0-127 B:128-191 C:192-223 D:224-239 E:240-255
申请网络,如果组织的主机数量不够(主机号数量),就会造成ip地址的浪费----解决方案:使用子网掩码
1.格式和ip地址格式一样 2.网络号从左到右填1,主机号是0 3.把主机号,前x位,定义为网络号,x有多少,就可以搭建多少子网
4.端口号
概念:用于标识主机中的进程
格式:0-65535范围的数字,进程可以通过绑定一个端口号,来发送及接收网络数据。
发送:向发送端写数据,系统会把数据经过网卡传输到网络的其他设备
接收:先由网卡接收数据,系统会把数据发送到指定的端口(数据中指定),再由端口对应的进程来接收 注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号
5.协议
网络协议:网络通信时,数据在网络设备中流转,都要遵循的一组规则和约定 三要素:语法 语义 时序 协议:最终体现为在网络上传输数据包的格式 http协议:协议格式
请求数据报组成 :请求方法 ,URL字段,版本 响应数据报组成 : 状态行,消息报头,响应正文
四个部分 :(1)行信息:请求行 (2)头信息 (3)body (4)空行 作用:双方使用一致的协议,接收端才知道如何解析 为知名协议预留的端口号:
22端口:ssh协议 80端口:http协议 443端口:https协议 21端口:预留给FTP服务器绑定FTP协议 23端口:预留给Telnet服务器绑定Telnet协议
五元组通信过程:类似于发快递
- 源IP:标识源主机
- 源端口号:标识源主机中该次通信发送数据的进程
- 目的IP:标识目的主机
- 目的端口号:标识目的主机中该次通信接收数据的进程
- 协议号:标识发送进程和接收进程双方约定的数据格式
netstat -ano 查看五元组信息
6.网络分层
好处:定义了不同的网络分层,是用来干嘛的,调用方不用关心实现细节,而使用统一的接口来调用
6.1 划分方式
6.1.1 OSI七层(一种偏理论的模型,并没有实际落地)
真实搭建网络,采取的网络的分层,没有把OSI七层模型全部实现
由低到高:
1.物理层:网络或wifi来传输 0 或1 数据 2.数据链路层:识别数据帧(发送数据报到下一个网络硬件设备) 3.网络层:地址管理与路由选择 4.传输层:确保数据传输的可靠 5.会话层:建立会话,负责建立连接和断开链接 6.表示层:接收端用什么方式来展示数据 7.应用层:应用程序所处的分层
6.1.2 TCP/IP 五层/四层 模型
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层; ? 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层; ? 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层; ? 对于集线器,它只实现了物理层;
网络通信时,经过的所有网络设备,每一个网络分层,都需要使用一致的协议
6.2封装和分用
封装:发送数据时,需要把数据包装成某个协议的格式,再发送 分用:接收数据时,需要把数据按照某个协议格式来解析,在使用 封装:
7.网络套接字编程
网络通信,都是基于系统提供的socket套接字来传输数据
7.1套接字分类:
- 流套接字:传输层使用tcp协议
- 数据报套接字:传输层使用udp协议
3**. 原始套接字**:用于自定义传输层协议 写Java程序来实现网络编程,需要在程序中,自行实现应用层协议 tomcat就是基于Java开发,且已经实现了http协议的web服务器程序,自己实现类似tomcat做http协议的解析以及封装,也是可以的
8.MAC地址
网络通信本质是网络硬件设备,来传输数据,硬件要发送数据到下一个硬件,只认识硬件的物理地址(MAC) 主机有一个或多个网卡,大多数情况,只使用一个网卡 WiFi是无线网卡 网线就是有线网卡 网络数据传输:一跳一跳的传输过程
目的主机(终点 主机C) 源主机(起点 主机B)
再浏览器输入一个url,回车以后,浏览器自动的封装一个http协议的数据报,再从网络分层由高到低的顺序,封装 MAC地址:标识每一跳的起点和终点 B - F - G - H - C - D - C
|