1.网络通信概述
从进程间通信说起:网络域套接字socket,网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。
网络通信的层次
(1)硬件部分:网卡
(2)操作系统底层:网卡驱动
(3)操作系统API:socket接口
(4)应用层:低级(直接基于socket接口编程)
(5)应用层:高级(基于网络通信应用框架库)(对socket进行封装)
(6)应用层:更高级(http、网络控件等)
网络通信本质上是两个不同电脑间的进程间通信。
软件部分分为应用程序部分和操作系统部分。硬件部分有网卡。网卡由操作系统层的网卡驱动控制与另一个网卡通过网络连接。
应用层通过API(即socket)操作驱动层,从而做到通过应用层连接网络。
本部分学习方法
(1)重点1:掌握网络通信的架构层次和基本原理
(2)重点2:掌握socket及其相关函数的使用
(3)重点3:掌握服务器和客户端程序通信的方法
2.网络通信基础知识1
网络通信的发展历程
(1)单机阶段
(2)局域网阶段
(3)广域网internet阶段
电脑与电脑之间并不是直接通过网络相连的,而是多台电脑组成一个局域网;多个局域网组成一个更大的局域网;多个局域网组成广域网,实现电脑之间的网络通信。
(4)移动互联网阶段
WiFi,无线网络通信
(5)物联网阶段
三大网络
(1)电信网、电视网络、互联网
网络通信的传输媒介
(1)无线传输:WIFI、蓝牙、zigbee、4G/5G/GPRS等
(2)有线通信:双绞线、同轴电缆、光纤等
3.网络通信基础知识2
OSI 7层网络模型(详见百度介绍)
(1)7层名字和顺序要记住,有时候笔试题目经常遇到。
应用层(Application Layer)
应用层是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP等。
主要负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。
表示层(Presentation Layer)
数据的表示、安全、压缩。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
格式有:JPEG、ASCll、DECOIC、加密格式等。
应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同。
表示层管理数据的解密与加密,如系统口令的处理。例如:在 Internet上查询你银行账户,使用的即是一种安全连接。你的账户数据在发送前被加密,在网络的另一端,表示层将对接
收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。
会话层(Session Layer)
建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话。
通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
负责在网络中的两节点之间建立、维持和终止通信。 会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中
断时决定从何处重新发送。
传输层(Transport Layer)
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP等,数据包一旦离开网卡即进入网络传输层。
定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重
组。常常把这一层数据叫做段。
网络层(Network Layer)
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP等。
在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
O S I 模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。
网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。由于网络层处理,并智能指导数据传
送,路由器连接网络各段,所以路由器属于网络层。在网络中,“路由”是基于编址方案、使用模式以及可达性来指引数据的发送。
数据链路层(Datalink Layer)
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
OSI模型的第二层,它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息
则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
物理层(Physical Layer)
建立、维护、断开物理连接。
主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转
化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
O S I 模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C 上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。 用户要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的7层之内,有人把物理媒体当做第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是bit比特。
网卡
(1)计算机上网必备硬件设备,CPU靠网卡来连接外部网络
(2)串转并设备
网卡和CPU之间通过总线并行通信,网卡通过网线与外界的网络通信是串行的。
(3)数据帧封包和拆包
网卡负责对数据包进行处理,数据包的大小是不一定的。网络通信就是一个数据包一个数据包去发送。网络驱动负责将应用层发的一连串数据截成一个一个包。网卡会给数据包补充信息添加包头包尾,包头包尾用于表示数据来源和校验。网卡的主要功能就是封包和拆包。
(4)网络数据缓存和速率适配
网卡内部有数据缓存区,并可以进行速率适配。
集线器(HUB)
(1)信号中继放大,相当于中继器,作用是将衰减的网络信号放大。
(2)组成局域网络,用广播方式工作。
将多台计算机接到集线器上组成局域网络。集线器的工作方式是广播,有一台计算机发送一份数据,集线器会将该数据向所有计算机广播。传输的数据中包含接收端的IP地址,只有真正的接收端会接收数据。
(3)注意集线器是不能用来连接外网的
交换机
(1)包含集线器功能,但更高级
(2)交换机中有地址表,数据包查表后直达目的通信口而不是广播
地址表中记录了每个端口连接的计算机的IP地址。
(3)找不到目的口时广播并学习
交换机第一次工作时,地址表为空白,他此时和集线器一样进行广播,确认某个端口的IP地址后,将其填入地址表。
4.网络通信基础知识3
路由器
(1)路由器是局域网和外部网络通信的出入口,即网关。路由器就是用来做网关的。
(2)路由器将整个internet划分成一个个的局域网,却又互相联通。
(3)路由器对内管理子网(局域网),可以在路由器中设置子网的网段,设置有线端口的IP地址,设置dhcp功能等,因此局域网的IP地址是路由器决定的。
路由器中LAN端链接子网,WAN端链接外网。路由器的IP地址也是局域网的一部分,可以把路由器当作子网的一部分。
(4)路由器对外实现联网,联网方式取决于外部网络(如ADSL拨号上网、宽带帐号、局域网等)。这时候路由器又相当于是更高层级网络的其中一个节点而已。
(5)所以路由器相当于有2个网卡,一个对内做网关、一个对外做节点。
(6)路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。其实就是局域网内电脑要发到外网的数据包,和外网回复给局域网内电脑的数据包。
(7)路由器技术是网络中最重要技术,决定了网络的稳定性和速度。
DNS(Domain Name Service 域名服务)
(1)网络世界的门牌号:IP地址
(2)IP地址的缺点:难记、不直观
(3)IP地址的替代品:域名,譬如www.zhulaoshi.org
(4)DNS服务器就是专门提供域名和IP地址之间的转换的服务的,因此域名要购买的
(5)我们访问一个网站的流程是:先使用IP地址(譬如谷歌的DNS服务器IP地址为8.8.8.8)访问DNS服务器(DNS服务器不能是域名,只能是直接的IP地址),查询我们要访问的域名的IP地址,然后再使用该IP地址访问我们真正要访问的网站。这个过程被浏览器封装屏蔽,其中使用的就是DNS协议。
(6)浏览器需要DNS服务,而QQ这样的客户端却不需要(因为QQ软件编程时已经知道了腾讯的服务器的IP地址,因此可以直接IP方式访问服务器)
5.网络通信基础知识4
DHCP(dynamic host configuration protocl,动态主机配置协议)
(1)每台计算机都需要一个IP地址,且局域网内各电脑IP地址不能重复,否则会地址冲突。
(2)计算机的IP地址可以静态设定,也可以动态分配
动态分配是由路由器完成的,当局域网中的一台电脑想要获取一个IP地址时,会向路由器发出一个请求;路由器根据LAN端口设置的网段,根据IP地址表找到一个没有人用的端口。
(3)动态分配是局域网内的DHCP服务器(DHCP服务器其实就是路由器的一段代码)来协调的,很多设备都能提供DHCP功能,譬如路由器。
(4)动态分配的优势:方便接入和断开、有限的IP地址得到充分利用
NAT(network address translation,网络地址转换协议)
(1)IP地址分为公网IP(internet范围内唯一的IP地址)和私网IP(内网IP),局域网内的电脑使用的都是私网IP(常用的就是192.168.1.xx)
(2)网络通信的数据包中包含有目的地址的IP地址
(3)当局域网中的主机要发送数据包给外网时,路由器要负责将数据包头中的局域网主机的内网IP替换为当前局域网的对外外网IP。这个过程就叫NAT。
(4)NAT的作用是缓解IPv4的IP地址不够用问题,但只是类似于打补丁的形式,最终的解决方案还是要靠IPv6。
(5)NAT穿透
NAT穿透指的是点对点的传输,例如迅雷。有一台电脑A想要下载数据,这份数据另一个电脑B有;但A,B同处于局域网中,都没有公网IP,A无法找到B。此时可以使用P2P下载,在A,B都装有迅雷客户端,这样迅雷可以获取A,B的公网地址,双方可以通信。
6.网络通信基础知识5
IP地址分类(IPv4)
(1)IP地址实际是一个32位二进制构成,在网络通信数据包中就是32位二进制,而在人机交互中使用点分十进制方式显示。即192.168.x.x
(2)IP地址中32位实际包含2部分,分别为:网络地址(网段)和主机地址。子网掩码,用来说明网络地址和主机地址各自占多少位。
(3)由网络地址和主机地址分别占多少位的不同,将IP地址分为5类,最常用的有3类
三类IP地址
(1)A类。
(2)B类
(3)C类 //区别就是网段与主机地址分别占多少位
(4)127.0.0.0用来做回环测试loopback
如何判断2个IP地址是否在同一子网内
(1)网络标识 = IP地址 & 子网掩码
(2)2个IP地址的网络标识一样,那么就处于同一网络。
即网段相同,同属一个局域网。
源IP地址:发出数据包的网络的IP地址
目标IP地址:要接收数据包的计算机的IP地址
二进制方式 0xffffffff 0xC0A80166/0x6601A8C0 本质
点分十进制方式 255.255.255.255 192.168.1.102 方便人看的
IP地址 = 网络地址 + 主机地址
网络地址用来表示子网
主机地址是用来表示子网中的具体某一台主机的。
譬如可以8位表示网络,24位表示主机
也可以16位表示网络,16位表示主机
14为表示网络,18位表示主机
子网掩码为255.255.255.0时表示前24位为网络地址,后8位为主机地址
子网掩码为255.255.0.0时表示前16位为网络地址,后16位为主机地址
网络地址决定了这种网络中一定可以有多少个网络,譬如子网掩码为255.255.255.0时表示我们这一种网络一共最多可以有2^24个,每个这种网络中可以有2^8个主机。
如果子网掩码为255.255.0.0时,表示我们这种网络可以有2^16个网络,每个这种网络中最多可以有2^16个主机。
192.168.1.102 & 255.255.255.0 = 192.168.1.0
192.168.1.253 & 255.255.255.0 = 192.168.1.0
192.168.1.4和192.168.12.5,如果子网掩码是255.255.255.0那么不在同一网段,如果子网掩码是255.255.0.0那么就在同一个网段
MAC地址即为物理地址,每一个网卡有一个固定的物理地址。