网络基础知识

相关概念

1.链接:连接,指在电子计算机程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。

2.超链接:在本质上属于一个 网页 的一部分,是一种允许我们同其他网页或站点之间进行连接(跳转)的功能

3.超文本,包含有超链接(Link)和各种多媒体元素标记(Markup)的 文本。这些超文本文件彼此链接,
形成网状(Web),因此又被称为 网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言 HTML

4.域名,就是浏览器和服务器之间沟通的语言,网站中的通信协议一般就是HTTP协议和HTTPS协议。

5.referer:属于请求头的一部分,当用浏览器向web发送请求的时候,一般会带上Referer,
告诉服务器该网页是从哪个页面链接过来的,服务器可以可以根据这些信息进行相应的处理

6.SOA松耦合架构,面向服务的架构(SOA)是一个组件模型,
它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

URL

U

URL:又叫统一资源定位符,全球(万维网)唯一,一个URL对应一个页面,
URL由协议,IP或域名:端口,文件名及其路径 3部分组成,URL长度不定,会多次调用变量,每个&后面都是一个变量

#原始的URL
https://www.google.com/search?q=efe&oq=efe&aqs=chrome..69i57.1603j0j7&sourceid=chrome&ie=UTF-8

#反馈后的URL
https://www.baidu.com/s?wd=linux%20%E5%8D%B8%E8%BD%BD%E6%8C%82%E8%BD%BD&rsv_spt=1&rsv_iqid=0xbfcef
33400030016&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&
rsv_dl=ih_0&rsv_sug3=1&rsv_sug1=1&rsv_sug7=001&rsv_sug2=1&
rsv_btype=i&rsp=0&rsv_sug9=es_2_1&rsv_sug4=1153&rsv_sug=1

http

http,全称超文本传输协议,HTTP协议是一种使用明文数据传输的网络协议

http(协议)	: 80
https(协议)	: 443

HTTP和HTTPS区别,HTTPS是加密的
就像ssh 和Telnet 的关系
https相对http来说更安全
HTTP+ SSL=HTTPS

https

HTTPS协议 :可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。
在数据进行传输之前,对数据进行加密,然后再发送到服务器。
这样,就算数据被第三者所截获,但是由于数据是加密的,所以你的个人信息让然是安全的。这就是HTTP和HTTPS的最大区别

HTTP工作原理

用户在浏览器输入网址(超链接)
1. DNS进行域名解析,访问本地host文件,
   访问本地/etc/resolv.conf 文件,进行递归查询,
   访问根域名解析服务器,进行迭代查询
2. .DNS服务器,会将 解析出来的IP地址 并返回给浏览器
3. 浏览器与IP所在服务器建立TCP连接(80端口),#3次握手
4. 请求文档 
5. 服务器给出响应,将请求的 文档返回给浏览器
6. 断开TCP连接 (4次挥手)

#HTTP工作原理详解:
1.用输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > DNS解析(递归查询|迭代查询)
    客户端向服务端发起查询 - > 递归查询
    服务端向服务端发起查询 - > 迭代查询
2.由浏览器向服务器发起TCP连接(三次握手)
    客户端     -->请求包连接 -syn=1 seq=x           服务端
    服务端     -->响应客户端syn=1 ack=x+1 seq=y     客户端
    客户端     -->建立连接 ack=y+1 seq=x+1          服务端
3.客户端发起http请求:(#请求头)
    1)请求的方法是什么:     GET获取
    2)请求的Host主机是:     blog.driverzeng.com
    3)请求的资源是什么:     /index.html
    4)请求的端端口是什么:    默认http是80 https是443
    5)请求携带的参数是什么:   属性(请求类型、压缩、认证、浏览器信息、等等)
    6)请求最后的空行
4.服务端响应的内容是: (#响应头,相应主体)
    1)服务端响应使用WEB服务软件
    2)服务端响应请求文件类型
    3)服务端响应请求的文件是否进行压缩
    4)服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
    客户端     --> 断开请求 fin=1 seq=x          -->    服务端
    服务端     --> 响应断开 fin=1 ack=x+1 seq=y  -->    客户端
    服务端     --> 断开连接 fin=1 ack=x+1 seq=z  -->    客户端
    客户端     --> 确认断开 fin=1 ack=x+1 seq=sj -->    服务端  (断开才能看到)

用户访问网站集群架构流程

H

1.客户端发起http请求,请求会先抵达#前端的防火墙
2.防火墙识别用户身份,正常的请求通过内部交换机#通过tcp连接后端的负载均衡,传递用户的http请求
3.负载接收到请求,会根据请求的内容进行下发任务,#通过tcp连接后端的web,转发发用户的http请求
4.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下:
    静态请求:web直接返回给负载均衡->防火墙->用户
    动态请求:web向后端的动态程序建立TCP连接,将用户的动态http请求传递至动态程序->由动态程序进行解析
5.动态程序在解析的过程中,如果碰到查询数据库请求,#则优先与缓存建立tcp连接,并发起数据查询操作。
6.如果缓存没有对应的数据,动态程序#再次向数据库建立tcp连接,并发起查询操作。
7.最后数据由, 数据库->动态程序->缓存->web服务->负载均衡->防火墙->用户。

http 请求报文的方法

方法(Method) 含义
GET 请求读取一个Web页面(下载)
POST 附加一个命名资(如Web页面)(上传)
DELETE 删除Web页面
CONNECT 用于代理服务器
HEAD 请求读取一个Web页面的头部
PUT 请求存储一个Web页面
TRACE 用于测试,要求服务器送回收到的请求
OPTION 查询特定选项

http相关术语

假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请问对应的pv,uv,ip分别是多少?

 PV : 页面独立浏览量(刷新一次算一次)
 UV : 独立设备	
 IP : 独立IP	(可以理解为公网IP)
 
那么上面的题:
PV: 100*2*2 = 400
UV: 1002*2 = 200
IP: 1

日PV千万量级并不大

课前回顾

cdn就是个缓存,可以缓存web上的图片等静态资源,好处是加快用户访问的速度
redis缓存字符串,缓存非关系型数据库,还可以做共享存储(做会话保持)
数据库,储存字符串

OSI模型 (网络模型)

1

IOS :苹果系统
ISO :文件扩展名
OSI :网络进行通信工作的模型
SIO :超级输入输出芯片代号,为主板上的标准I/O接口提供控制处理功能。

物理层:	定义接口的特性、传输模式
	单工	:一个方向传输,另一个接收(电台广播)
	办双工	:既可以作为发送方,也可以作为接收方,不能同时进行(对讲机)
	全双工	:既可以作为发送方,也可以作为接收方,可以同时进行(电话📞)
数据链路层:  MAC地质编址
 			MAC地址寻址
 			差错校验
网络层:	端到端的寻址、局域网/广域网/城域网
传输层:	建立端与端的连接,保证端与端之间信息的传输
		   TCP(传输控制协议):可靠的,面向连接的传输协议(可靠,准确)(慢)
		   UDP(用户数据报协议):不可靠的,面向无连接的传输协议(快)
会话层:	确定数据是否需要网络传递(会话)
表示层:	 打包压缩,加密(ssh)
应用层:	为用户提供服务,给用户一个操作界面,为应用软件提供软件
	应用层协议:http(80),ftp(20/21),smtp(25),pop3(110),telnet(23),dns(53),tftp(69)
	SNMP(161/162),SMTP(25)tomcat(8080),dhcp(67.68)
	
	http:	 基本的请求和回应
	https:	超文本链接协议
	ftp:	文件传输协议,不加密
	POP3:	邮政服务postfix的协议
	telnet:  远程连接协议,明文
	ssh:	 安全外壳协议,密文
	dns:	 域名协议,基于UDP
	dhcp:	 动态主机配置协议(客户端/服务端)
	tftp:	简单文件传输协议,不加密
	SNMP:	简单网络协议
	SMTP:	简单邮件协议
	
#ISO将整个通信功能划分为七个层次,划分原则是:

(1)网路中各节点都有'相同的层次';

(2)不同节点的'同等层具有相同的功能';

(3)同一节点内相邻层之间通过'接口'通信;

(4)每一层使用下层提供的服务,并向其上层提供服务;

(5)不同节点的同等层按照'协议'实现对等层之间的通信。

(6)根据功能需要进行分层,每层应当实现定义明确的功能。

(7)向应用程序'提供服务'

物理层 1

网卡,网线,集线器,中继器,调制解调器

数据链路层2

该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路

ethernet规定:

1.要有一块网卡,网卡上要有一个独一无二的地址(mac地址)
2.一组电信号构成一个数据包,叫做(由01组成)
3.每一数据帧分成:报头head和数据data两部分(报头既是请求头)

mac地址:

head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址

mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

广播:

有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址),会造成广播风暴

网络层3

数据链路层的数据在这一层被转换为数据包

一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。

img

上图结论:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关

网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址(ip)

# IP协议:

规定网络地址的协议叫'ip协议',它定义的地址称之为'ip地址',广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示(二进制)(每8位以点分割),IP不是可靠的协议
范围(十进制)0.0.0.0-255.255.255.255
一个ip地址通常写成四段十进制数,例:172.16.10.1

# ip地址分成两部分(点分十进制)
A类IP地址: 0.0.0.0~127.255.255.255    
B类IP地址:128.0.0.0~191.255.255.255
C类IP地址:192.0.0.0~239.255.255.255

网络部分:标识子网
主机部分:标识主机
注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网

例:172.16.10.1与172.16.10.2 '并不能确定二者处于同一子网,因为没有指定子网掩码'

# 子网掩码

所谓”子网掩码”,就是表示'子网络特征'的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的'网络部分全部为1,主机部分全部为0'。(不同类型的IP地址的子网掩码是不一样的)
比如,IP地址172.16.10.1,如果已知'网络部分是前24位,主机部分是后8位',那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

0和1都是连续的,才会有效(254.0.0.0的二进制形式为11111110.00000000.00000000.00000000)
 

'知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络'。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

 
#判断是否处于同一子网
比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,

172.16.10.1(ip):10101100.00010000.00001010.000000001

255255.255.255.0(子网掩码):11111111.11111111.11111111.00000000

AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
AND运算又叫做"按位与"运算,符号:"&",在编程术语中表示一种运算方法,不可逆(1-1=1 1-0=0 0-0=0)

172.16.10.2:10101100.00010000.00001010.000000010
255255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
结果都是172.16.10.0,因此它们在同一个子网络。

有的时候我们还想知道,两个IP各自的主机标识,先将子网掩码取反,再和IP做AND.即可得到主机位
A:11001010.11000010.10000000.00001001
B:11001010.11000010.10000000.00001101
掩码取反:00000000.00000000.00000000.11111111

总结一下,'IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络(IP+子网掩码)'

# ip数据包
ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分
head:长度为20到60字节
data:最长为65,515字节。
而以太网数据包的'数据'部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要'分割成几个以太网数据包,分开发送了'。
# ARP协议(Address Resolution Protocol)

arp协议由来:计算机'通信基本靠吼',即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到,通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,'如何获取目标主机的mac,就需要通过arp协议,ARP 是根据IP地址获取MAC地址的一种协议。'

协议工作方式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24
1.首先通过ip地址和子网掩码区分出自己所处的子网
2.分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)
3.这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac

传输层4

OSI下3层的主要任务是数据通信,上3层的任务是数据处理。而传输层(Transport Layer)是OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用

在这一层,信息的传送单位是报文。

img

传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,

那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号

传输层功能:建立端口到端口的通信

补充:端口范围0-65535

img

TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。

而第二层则是传输层,著名的TCP和UDP协议就在这个层次。

第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。

第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。

tcp协议:

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

以太网头 ip 头 tcp头 数据

udp协议:

不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

以太网头 ip头 udp头 数据

tcp报文

img

TCP/IP#

img

QQ截图20200604175003.png

完成四次挥手之后,你还得进入time_wait的状态,付出这个惨痛的代价。

TCP协议的11种状态

三次握手中:(状态)
1.SYN_SENT(因为相应速度太快,一般看不到)
2.LISTEN(监听某一端口,等待服务)
3.SYN_REVD(syn洪水攻击)半连接池(队列,即排队sqeue)
4.ESTABLISHED

四次挥手中:(状态)
1.FIN_WAIT_1 (想断开连接1)
2.CLOSE_WAIT(等待关闭1)
3.FIN_WAIT_2(等待2)
4.LAST_ACK
5.TIME_WAIT(TIME_WAIT多,证明服务器上有大并发)

关闭状态:
1.CLOSED(被动关闭端在接收到ack包后,进入CLOSED状态关闭TCP连接)
2.CLOSING(客户端和服务端同时发起断开连接)

C:\Users\Administrator>netstat -an|findstr 122
  TCP    192.168.0.102:60026    123.126.122.47:443     CLOSE_WAIT	#状态

会话层5

因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理

会话层主要三大功能

1.建立会话:A、B两台网络设备之间要通信,要建立一条会话供他们使用,在建立会话的过程中也会有身份验证,权限鉴定等环节;

2.保持会话:通信会话建立后,通信双方开始传递数据,当数据传递完成后,OSI会话层不一定会立刻将两者这条通信会话断开,它会根据应用程序和应用层的设置对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输局

3.断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。或者A、B重启、关机、手动执行断开连接的操作时,OSI会话层也会将A、B之间的会话断开。


表示层6

它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层

表示层主要三大功能:

1.内码转换
2.压缩与解压缩
3.加密与解密。


应用层7

应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

应用层功能:规定应用程序的数据格式。

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

socket

img

我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

5

posted @ 2020-05-13 18:06  看萝卜在飘  阅读(635)  评论(0编辑  收藏  举报