计算机网络

在这里插入图片描述

OSI七层模型,理论上的网络通信模型

物理层
最底层,实现了相邻计算机节点直接的比特流透明传输,尽可能的屏蔽掉具体传输介质和设备的差异。
数据链路层
接收来自物理层的位bit流形式的数据,封装成帧,传送到网络层。同样,接收来自网络层的数据帧,拆装成位流转发到物理层,通过流量控制等方法提供无差错的数据链路。
网络层
选择链路,通过网络地址找到对应的物理地址,通过路由器选择最合适的路线进行传输
传输层
在源端口和目的端口之间提供可靠的透明数据传输,为不同主机的进程提供逻辑通信。
会话层
用户应用程序和网络之间的接口,负责两点之间的通信建立维持终止。
表示层
对应用层的数据进行解释,确保一个系统的应用层信息被两一个系统的应用层读取
应用层
为用户的应用提供网络通信服务

TCP/IP五层模型,实际的通信标准

物理层
数据链路层
网络层
运输层
应用层

Http协议

Http协议是一个应用层协议,由请求头和请求体构成,基于TCP/IP传输。默认端口80;
http工作原理
http协议定义 web客户端请求web服务器再返回web页面到客户端。
1.客户端首先连接到web服务器。建立一个TCP链接。
2.客户端发送http请求,由请求行,头部,空行,数据组成。
3.服务器接收到请求,发送响应。
4.服务器判断是长连接还是短连接,决定是否释放TCP链接。
5.客户端解析状态行以及每一个响应头和响应体,读取数据。然后在浏览器中显示。

Https协议

1.客户端首先连接到服务器
2.客户端发送https请求
3.服务器返回公钥
4.客户端验证公钥
5.客户端发送随机值,服务器接收到随机值用私钥解,又得到一个随机值
6.客户端与服务端进行通讯,用自己的随机值进行对称加密。

Http和Https区别

  • Http运行在TCP协议上,进行的是明文传输,客户端和服务端都无法验证对方身份
    Https运行在SSL安全套接字上。SSL运行在TCP上。是加密的http
  • 端口不同:http 80 https 443
  • 资源消耗不同 https由于加密消耗更多的内存和CPU
  • https是一种共享秘钥和公开密钥混合的加密机制,需要向认证机构购买证书
状态码
2@@

成功处理请求

3@@

重定向,表示需要下一步操作
304已经缓存页面

4@@

请求错误
400服务器不能识别语法
403服务器拒绝请求
404服务器找不到请求的页面

5@@

服务器内部错误
500服务器内部错误,无法完成请求

对称机密 和 非对称加密

  • 对称加密指:加密和解密用的同一个秘钥
  • 非对称加密:公钥随意发布,私钥只有自己知道,发送密文使用公钥加密,接收到再用私钥解密。
  • 非对称加密速度很慢,我们发送秘钥可以使用非对称加密,发送消息通过对称加密

三次握手和四次挥手

在这里插入图片描述

第一次握手

Client 将标志位SYN置为1,产生一个随机的seq值。发送给Server。
Client进入SYN_SENT状态。等待Server确认回复。

第二次握手

Server收到来自Client的数据包,发现SYN同步序列编号标志位为1,表示Client请求建立连接,Server将标志位SYN,ACK都置为1,产生一个随机的seq值,和一个值为Client的seq+1的值ack。
然后将数据包发送给Client。Server 进入SYN_RCVD状态。等待Client确认回复。

第三次握手

Client收到数据包,发现ack的值为seq+1,ACK为1,表示Server收到消息,并且同意连接。Client将ACK置为1,和一个值为Server的seq+1的ack,作为数据包发送给Server,
Server收到后,发现ACK为1,并且ack=seq+1,建立连接成功。Client和Server都进入ESTABLISHED(TCP连接成功)状态。完成三次握手。进行数据传输。
在这里插入图片描述

第一次挥手

Client发送一个FIN和一个随机值seq给Server,Client进入FIN_WAIT_1终止等待状态。

第二次挥手

Server收到FIN和随机值seq后,发送一个ACK和seq+1的数给Client。表示收到断开连接的信号,关闭Client到Server的连接。Server进入CLOSE_WAIT关闭等待状态。

第三次挥手

Server发送一个FIN和一个随机值seq给Client,Server 进入LAST_ACK最后确认状态

第四次挥手

Client收到FIN和随机值seq,Client进入TIME_WAIT。发送一个ACK和seq+1的数给Server,Server进入COLSE状态,完成四次挥手。

为什么需要三次握手
是为了防止已经失效的链接请求又传入到了Server端。
如果第一次握手的时候Client发送请求链接的请求时,在某个网络节点滞留。那么Server 没有收到链接请求,但是链接释放后又收到了请求,然后Server就发送了确认数据包,然后第二次握手成功,这时服务端会一直等待Client发送数据,但是Client此时并没有建立链接。导致Server资源浪费。如果还有第三次握手,Server接收到没有请求链接的消息,则不会建立链接。
为什么要进行四次挥手
因为Server收到Client要断开链接的请求时。有可能Server还有要发送的数据,并不会立即关闭Socket链接。所以只能先发送一个ACK报文,表示收到。只有等数据发送完毕之后,再发送一个请求断开链接的FIN报文。
为什么第四次挥手时Client需要等待2MSL
Client从TIME_WAIT到CLOSED状态,需要Server 的确认。
有可能最后一个确认ACK没有收到。Server会一直发送FIN请求。所以Client不能立即关闭。而是需要等待2MSL确认Server不重复发送FIN请求。如果超过了回复所需的最大时间,Client就关闭。结束TCP连接。
如果刚好建立了连接。此时Client发生故障怎么办
TCP还有一个保活计时器。Client每发送一个数据则会重置计时器,如果计时器到达时间,Server会发送一个探测报文。如果多次发送都没有回复。服务器就断开链接。

TCP如何保证传输的可靠性

TCP是一种一种面向连接的,可靠的字节流服务。
可靠性有以下方式保证:

  • 数据包校验:检测数据在传输过程中的变化,若校验包有错,则丢弃报文,TCP发送数据超时会进行重传。
  • 有序排列:TCP报文段发送数据可能导致IP数据包乱序,TCP会将乱序数据包进行重新排序
  • 丢弃重复数据包
  • 应答机制: TCP收到另一端的数据,会延迟发送确认消息。
  • 超时重传:当TCP发送一个数据报文段后,启动一个定时器,等待目的端确认消息。如果没有确认,会重复发送一个报文段。
  • 流量控制:TCP连接的每一方都有一个缓冲空间,使用滑动窗口机制。
UDP如何实现可靠传输

传输层的UDP是不可导的,只能通过应用层来实现,有应答机制,滑动窗口,重传机制。

TCP与UDP的区别
  • TCP和UDP都属于传输协议
  • TCP面向连接,UDP无连接
  • TCP可靠,只支持点对点通信。UDP支持多对多通信
  • TCP是面向字节流,而UDP面向数据报
  • (TCP使用字节流,发送数据的次数和接收数据的次数没有联系,面向连接,有序到达)(UDP使用数据包,无连接,任何主机都可以发送数据,所以一次只能接收一个数据报文。)
  • TCP有拥塞控制,UDP没有,更适合媒体通讯
  • TCP首部20个字节,而UDP首部8个字节。
TCP UDP 运用场景

TCP与UDP都是传输层协议。
TCP用于对传输数据准确使用,比如HTTP,HTTPS等传输文件协议,POP,SMTP等邮件传输。

UDP用于传输性能高而不再乎数据完整性。用于语音聊天,视频聊天等。

TCP如何进行拥塞控制,如何保证传输的可靠性

拥塞控制只要有以下四种方法
1.慢启动,从小到大逐渐增加拥塞窗口的大小。
2.拥塞避免:慢慢增长。窗口大小+1,
3.快重传:快重传要求接收方在收到一个失序的报文段时,立即给发送发发出重复确认消息,如果连续收到三个确认消息,发送方就立即重传。
4.快恢复:连续收到三个重复确认时,将窗口大小减半,然后再进行拥塞避免。

客户端不断进行请求会怎么样

Server会为每一个Client请求创建一个连接。并发送确认报文,等待客户端确认连接。
如果不断发送请求会造成资源浪费。
解决的方法是:关闭不必要的服务,缩短SYN半连接超时时间,限制同时打开SYN连接的数量

Get和Post 的区别
  • Get一般是获取资源,Post一般是更新服务器资源
  • Get总会读取到同一个资源,而Post每次请求会改变资源。
  • Get是明文传出,数据会附在URL之后,以?分割并且参数会&隔开。而Post则是将请求数据放置在Http请求报文的请求体中。
  • Post安全性高,请求参数是被包装然后放在http请求体中。
  • Get发送请求的长度受限于URL,而Post请求没有大小限制。
输入URL之后

1.浏览器解析URL
首先判断URL是否是一个地址,还是一个关键字
如果有特殊字符还需要转义
2.地址解析
浏览器进行dns解析,检查域名对应的IP地址是否在缓存当中。如果没有,则发送DNS请求。
3.建立链接发送http请求
得到IP和其他信息后,会调用Socket函数,请求一个TCP进行封装。然后进行TCP三次握手。建立连接后发送http请求。
4.HTTP服务器处理请求
服务器收到请求消息后,包装一个具有响应头和响应体的http响应包,通过tcp/ip协议发送给浏览器。
5.客户端接收响应包
浏览器收到服务器的响应包,解析HTML,构建渲染树,浏览器进行布局等操作

Cookie和Session区别

Cookie和Session都是用来保持客户端和服务端之间状态的。
Cookie是采用在客户端保持,Session是采用在服务器端保持状态。
Cookie
实际上Cookie是一小段文本信息,客户端请求服务器,如果服务器要记录用户状态,那么就使用response向客户端浏览器发送一个Cookie,客户端会保存这个Cookie,浏览器再次请求时,浏览器就把Cookie交给服务器,服务器检查Cookie来辨认用户状态。
Session
客户端请求服务端,如果服务器记录该用户状态,就获取Session来保存状态,如果已经有Session,那么就之间检索使用,如果没有,就添加进去

对比
Session的实现通常依赖于Cookie,通过Cookie回传SessionID
Cookie有大小限制,由浏览器决定,Session理论没有大小,至于服务器有关系
Cookie存在安全问题,在本地保存。而Session保存在服务器中,更安全。
Session会增加服务器压力

IP地址

网络地址

IP地址由网括号和主机号组成,网络地址的主机号全为0,代表整个网路

广播地址

广播地址的主机号全部为1.当向某个网络官博地址发消息,所有主机会都收到消息

ABC类地址

A类0.0.0.0-127.255.255.255
私有地址是10.0.0.0/8—10.255.255.255
B类128.0.0.0-191.255.255.255
私有地址是172.16.0.0/12—172.31.255.255
C类192.0.0.0-223.255.255.255
私有地址是192.168.0.0/16—192.168.255.255

D类地址是组播地址,一对多
E类地址供以后使用

1.1.1.1是受限的广播地址,不会有路由器进行转发

0.0.0.0

用于寻找自己的IP地址

127.0.0.0 回环地址 表示本机地址

子网掩码及网络划分

IPV4中网络号占位太多,所以主机号太少,如果创建过多的子网,那么每个子网上的主机数会更少

子网掩码计算

对于不需要再划分子网的IP地址来说,如果B类那么就是255.255.0.0
利用子网数计算
首先明确划分多少子网
比如将168.195.0.0划分27个子网
2^5=32需要5位
原来是255.255.0.0
那么现在将主机地址前5位置为1
得到255.255.11111000.00000000
利用主机数来算
如果
将168.195.0.0划分若干子网,每个子网有700台主机
700台主机 2^10次。所以需要十位0
那么255.255.11111100.00000000
255.255.252.0
如果有10台主机
2^4=16 所以需要4位来表示主机
10+1(广播)+1(网络地址)+1(网关)=13<=16
所以子网掩码为255.255.255.11110000

ARP RARP
ARP地址解析协议,根据IP地址获取到物理地址
ARP

主机发送消息时,将目标IP地址的ARP请求广播到所有主机中,并接收返回消息,确定目标的物理地址,然后将此信息保存在本机ARP缓存当中。
地址解析协议是建立在各个主机相互信任的基础上的,网络主机可以自由发送ARP应答消息,其他主机会直接存入缓存中,
ARP工作流程
1.首先每个主机都会在ARP缓存中建立一个表,表示IP与MAC之间的映射关系。
2.源主机发送数据时,检查表中是否有对应IP地址的MAC地址,如果有,就直接发送,没有就广播ARP数据包。
3.广播之后,会检查发送的IP是否是自己的,如果不是就忽略,如果是,则将IP和MAC写入自己的ARP表中,然后将本机的MAC地址写入ARP响应包里,告诉源主机自己就是这个MAC。
4.如果源主机收到了响应数据包,那么就保存这个IP和MAC并发送数据,如果没有收到,则表示ARP查询失败。

RARP

将MAC地址转换成Ip地址。
流程
1.给主机发送一个本地RARP广播,声明自己的MAC
2.本地网段的RARP服务器收到这个请求,检查表,获取MAC对应的IP
3.如果存在,服务器就给源主机发送响应数据包和IP
4.如果不存在,不响应。
5.源主机收到服务器发来的数据包,使用其中的ip,如果没收到,就初始化失败。

协议端口

22 ssh 远程登录
23 telnet 远程登录
53 DNS域名解析
80 http超文本传输协议
443 https
1080 Sockets
3306MySQL

DNS

DNS是域名解析协议
将域名和主机名解析成IP地址。
步骤
1.首先输入一个网址,会在本地host文件中查找有没有这个映射关系
2.如果没有这个域名对应的IP。那么就去本地DNS解析器缓存中查找。
3.如果没有,就去DNS服务器中查找
4.如果还没有,就用转发,查找下一级DNS服务器。

在一个自制系统RIP

内部网关协议,采用动态路由算法。基于距离矢量算法,用跳数衡量距离。
只适用于小区域。16跳表示不可达

在一个自制系统OSPF

开放式最短路径优先
内部网关协议,使用于大型网络

不在一个自制系统BGP

边界网关协议,采用TCP进行传输

VRRP

用来为网管设备提供冗余备份。
实现流量负载分担。
VRRP将可以成为网关的设备加入到备份组中,形成一台虚拟路由,局域网内的主机将虚拟路由设置成缺省网关,VRRP通过优先级选出master,负责转发局域网内主机与外部通信的流量。当master网关坏掉后,备份的网管会成为新的master。保证流量转发不会中断。
VRRP可以监视上行接口的状态,当路由器上行接口出现故障时,路由器会降低优先级,使备份组的路由器工作。
在这里插入图片描述
Switch A、Switch B 上分别创建两个 VRRP 备份组。
Switch A 在备份组 1 内具有更高的优先级
A 内的主机将备份组 1 的虚拟 IP 地址设置为网关
Switch A、Switch B 上分别配置 VRRP 备份组监视上行接口
Switch A、Switch B 和二层交换机之间启用 MSTP 多实例
在 Switch A、Switch B 和 Switch E 之间配置 OSPF 路由协议。
Switch A 和 Switch B 之间的链路采用聚合链路,以提高心跳线的可靠性。

MSTP

用来消除数据链路层的环路,生成树协议。将环路网络结构修剪成无环路的网络结构,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值