网络原理知识点(一)

网络模型
OSI七层模型

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
在这里插入图片描述

TCP/IP五层模型

(四层没物理层),从下到上:
在这里插入图片描述

对比

在这里插入图片描述


封装和分用

封装类似发送快递包裹,需要从内往外打包。分用类似拆快递,需要从外往内拆包

封装过程:本机封装(从上到下)
(1)应用层:浏览器将请求数据(ip)封装为http协议(如果没有带端口号,默认80端口)的数据(ip)
(2)传输层:tcp将前一个封装数据包再次封装为tcp数据包(ip+port)
(3)网络层:ip协议再次封装
(4)数据链路层:以太网技术,携带mac(系统将数据包发送到本机网卡),封装为数据帧
(5)请求端—>发送数据---->局域网主机
不同设备封装的层次可能不同:路由器从网络层封装。

分用过程:接收端处理数据: 分用(从下到上)
(1)数据链路层:操作系统在网卡接收数据,系统解析接收到的数据报(处理数据帧)
(2)网络层:系统处理ip头
(3)传输层:系统处理tcp头(ip+port),知道端口号,知道对应的应用程序是哪个,系统将数据包交给应用程序处理
(4)应用层:应用程序处理数据(根据协议)


五元组

五元组:源IP+源端口+目的IP+目的端口+协议
IP:定位网络中的某一主机,在网络层包装IP地址。 本机IP默认:127.0.0.1
端口号:绑定主机中某一个应用程序,应用程序都是通过在传输层包装端口号发送/接收数据
IP+端口 : 可定位到网络上具体的某应用程序

发送数据:五元组
接受端响应数据:目的IP+目的端口 = 发送数据包中的源IP + 源端口

MAC地址(网卡绑定的物理地址):用来识别数据链路层中相连的节点;
- 长度为48位, 即6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能 会冲突; 也有些网卡支持用户配置mac地址).

IP地址和MAC地址区别:在这里插入图片描述


网络互联场景

从A主机发送FTP命令"下载文件"数据包 ----->主机C

ARP请求数据包:源MAC,目的MAC(广播形式FF:FF:FF….),目的IP

  • 查找目的主机MAC地址:ARP协议(建立IP与MAC映射。主机ARP缓存表)
    • 1.查找本机ARP缓存表,通过目的IP查找目的MAC
    • 2.如找到,就直接发送数据包
    • 3.如找不到,主机A广播ARP请求数据包—>所有主机接收到ARP数据包目的IP ---->主机C:发现是请求自己的MAC地址,就返回ARP响应MAC 。 其他主机:通过IP判断出不是请求自己的MAC,直接丢弃数据包
  • 发送数据包

局域网:
在这里插入图片描述

发送的数据报:源IP(源端口号)+源MAC+目的IP(目的端口号)+目的MAC+协议

发送的过程:

  • 判断目的主机与本机在同一网段:网络号(IP前三位网络号,后一位主机号
    网络号:IP与子网掩码"按位与")
    • 在同一网段(走交换机步骤)
    • 不在同一网段:通过ARP缓存表查询网关IP对应的MAC
      • 1、主机发送数据报:源IP(源端口号)+源MAC+目的IP(目的端口号)+目的MAC(路由器)+协议
      • 2、路由器接收数据报:
        1)路由表:目的IP 对应设备的 MAC地址
        2)数据报的加工(先分用,再重新封装):数据报的以太网帧(数据链路层)里边包含的
        源MAC修改为自己(路由器)MAC,目的MAC修改为目的主机(主机4)MAC
      • 3、按目的MAC发送数据报:发送到主机4
      • 4、目的主机解析(分用),响应 (重新封装发送)

广域网在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


TCP/IP

TCP安全机制:
(1)确认应答机制:序号+确认序号实现
(2)超时重传机制:系统基于TCP协议实现,动态计算报文的最大生存时间MSL,超时时间设置为2MSL。作用:超过超时时间,表示丢包(发送数据报,接收确认数据报)时,需要重新发送数据报(系统中发送缓冲区保存有数据,可以重发)
(3)连接管理机制
(4)流量控制
(5)拥塞控制

TCP性能机制:
(1)滑动窗口
(2)延迟应答
(3)捎带应答

TCP与UDP区别

TCP面向连接,UDP面向非连接即发送数据前不需要建立链接。
面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。

非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

TCP提供可靠的服务(数据传输),UDP无法保证。
TCP面向字节流,UDP面向报文。
TCP数据传输慢,UDP数据传输快。

TCP对应协议
1.FTP:定义了文件传输协议,使用21端口。
2.Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
3.SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
4.POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
5.HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应协议
1.DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
2.SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
3.TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

TCP三次握手

(建立连接:都是单方向建立)
第一次握手
当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SYN_SENT。
第二次握手
当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这里服务器发送确认包ACK,这里的ACK为x+1,意思是说“我收到了你发送的SYN了”,同时,服务器也会向客户端发送一个SYN包,这里我们设SYN为y。这时服务器的状态为SYN_RECV。
一句话,服务器端发送SYN和ACK两个包。
第三次握手
客户端收到服务器发送的SYN和ACK包后,需向服务器发送确认包ACK,“我也收到你发送的SYN了,我这就给你发个确认过去,然后我们即能合体了”,这里的ACK为y+1,发送完毕后,客户端和服务器的状态为ESTABLISH,即TCP连接成功。
在三次握手中,客户端和服务器端都发送两个包SYN和ACK,只不过服务器端的两个包是一次性发过来的,客户端的两个包是分两次发送的。

TCP连接时是三次握手,那么两次握手可行吗?

“三次握手"的目的是"为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。
假定出现一种异常情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。
假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ACK包。这样就会白白浪费资源。而经过三次握手,客户端和服务器都有应有答,这样可以确保TCP正确连接。

TCP四次挥手(断开连接)

当A端和B端要断开连接时,需要四次握手,这里称为四次挥手。
断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。
第一次挥手
A端向B端请求断开连接时会向B端发送一个带有FIN标记的报文段,这里的FIN是Finish的意思。
第二次挥手
B端收到A发送的FIN后,B段现在可能现在还有数据没有传完,所以B端并不会马上向A端发送FIN,而是先发送一个确认序号ACK,意思是说“你发的断开连接请求我收到了,但是我现在还有数据没有发完,请稍等一下呗”。
第三次挥手
当B端的事情忙完了,那么此时B端就可以断开连接了,此时B端向A端发送FIN序号,意思是这次可以断开连接了。
第四次挥手
A端收到B端发送的FIN后,会向B端发送确认ACK,然后经过两个MSL时长后断开连接。
MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。

为什么TCP连接是3次,挥手却是4次?

在TCP连接中,服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。

为什么会在第四次挥手后有2个MSL的延时?

MSL是最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。
假定网络不可靠,那么第四次发送的ACK可能丢失,即B端无法收到这个ACK,如果B端收不到这个确认ACK,B端会定时向A端重复发送FIN,直到B端收到A的确认ACK。所以这个2MSL就是用来处理这个可能丢失的ACK的。
在这里插入图片描述

滑动窗口(处于发送端)
  • 窗口:窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,依赖ACK响应报文中窗口大小字段。比如4段,分别1000字节的数据,窗口大小就是4000字节.
  • ACK响应报文中,携带请求下一序号是多少 —>在此序号前的所有数据已收到
    发送前四个段的时候, 不需要等待任何ACK, 直接发送;
  • 滑动窗口:依赖ACK响应报文中的下一序号进行,而下一序号是多少,又依赖接收到的连续报文的最大序号。
  • 收到第一个ACK后, 滑动窗口向后移动, 继续发送第五个段的数据; 依次类推;
  • 操作系统内核为了维护这个滑动窗口, 需要开辟 发送缓冲区 来记录当前还有哪些数据没有应答; 只有确认应答过的数据, 才能从缓冲区删掉;
  • 接收缓冲区保存有响应ACK数据的信息,可以根据ACK丢包进行重发
    这种机制称为“高速重发控制"也叫"快重传"
流量控制
  • 接收端:通过TCP协议头中的“窗口大小"字段,动态告诉发送端,发送数据的大小
  • 目的:接收端接收能力有限,为了防止接收缓冲区被打满,再接收数据就直接丢弃。使用窗口大小可以告诉发送端发送数据的大小。
拥塞控制

在这里插入图片描述

  • 当TCP开始启动的时候, 慢启动阈值等于窗口最大值;
  • 在每次超时重发的时候, 慢启动阈值会变成原来的一半, 同时拥塞窗口置回1;少量的丢包, 我们仅仅是触发超时重传; 大量的丢包, 我们就认为网络拥塞;当TCP通信开始后, 网络吞吐量会逐渐上升; 随着网络发生拥堵, 吞吐量会立刻下降;拥塞控制, 归根结底是TCP协议想尽可能快的把数据传输给对方, 但是又要避免给网络造成太大压力的折中方案.
延迟应答机制
  • 原理:接收到多个数据报时,不针对每条数据报响应ACK,而是延迟一定时间,这样接收缓冲区时间很快被处理,可用空间就更大,返回的窗口大小就可以设置的更大,使网络吞吐量更大,传输效率更高
  • 延迟的依据:1.时间 2.数量 都由系统决定
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值