计算机网络及原理速记草稿1

一、IP与MAC

想与对方计算机通信,首先要知道其IP地址,网络世界中发送数据给别人要知道对方MAC地址和IP地址。
Alt
在这里插入图片描述
每张网卡在出厂时都写出MAC地址,由六个字节组成,前3个数字表示硬件厂商编号由(IEE)国际性电子技术与电子工程师协会分配,后3个字节代表制造商制造该网卡的序列号,所以MAC地址是全球唯一的地址。
ARP协议:当计算机a想向计算机b发送消息时操作系统并不会立即发出,他会先发送一包ARP广播报文出去问下如192.168.1.10的MAC地址,此时网络中所有设备都收到这一包请求报文,除了192.168.1.10以外的设备都会丢弃这包请求报文,192.168.1.10会回复自己MAC地址,计算机收到回复知道计算机b的MAC地址,会把计算机b的MAC地址缓存起来,以便下次使用,然后把数据包补全发送出去,交换机根据数据包中MAC地址找到计算机b所在端口发送出去
在这里插入图片描述
网卡接入网络后如果要通信,需要配置IP地址,IP地址有两种,IPv4地址和IPv6地址。生活中电脑接上网线或者手机连接上路由器后没有让配置IP地址也可以正常使用,这是因为有称为DHCP的协议自动配置了。
DHCP协议:当电脑插上网线或手机接入WiFi,操作系统网络协议栈会自动向外发送一包DHCP请求,请求为其分配IP地址,路由器收到DHCP请求后会为其分配一个IP地址,并通过DHCP回复报文发送回去,操作系统收到DHCP回复后将其收到IP配置到网卡上。

二、交换机与路由器

1、交换机

交换机主要功能将数据包发送到正确的位置,交换机相当于邮递员,根据数据包中MAC地址找到对应的物理端口,一台交换机有多个端口,每个端口都有自己的编号,计算机的网卡通过网线连接到交换机端口上,只需要找到网关MAC地址在交换机哪端口就能将数据准确的发送。
在这里插入图片描述
在交换机中有一张端口与MAC地址映射表(MAC地址表)。交换机在收到数据包后首先把数据包源MAC与接收端口绑定,然后交换机根据MAC查找从哪个端口把数据发送出去。
在这里插入图片描述
交换机只关心MAC地址不关心IP地址,MAC地址在TCP/IP协议中处于第二层数据链路层,所以交换机被称为第二层设备。

在这里插入图片描述

2、路由器

路由器有两种接口,WAN口和LAN口,WAN口只有一个,接到网络运营商,LAN口可以有多个用来接家庭网络设备。如果把路由器WAN口忽略只用LAN口,其实此时的路由器就是一台交换机。如果使用WAN口就要引出网关的概念。

3、网关

IP&子网掩码,如192.168.1.10&255.255.255.0 = 192.168.0,IP地址与子网掩码相与之后的结果相同的两个IP认为是在同一个子网中,TCP/IP协议规定不同子网间不可以相互通信,如果通信,需要通过网关进行转发。网关上有两张网卡,分别配置了2个子网的IP地址,可以在两个网络间转发数据包。
在这里插入图片描述
网关通过路由表查询,从子网的网卡发出数据包。称根据目标IP判断如何发送为路由。
在这里插入图片描述
路由器由一个WAN口接入到互联网,多个LAN口接入本地网络,他们就分别属于两个不同的子网,所以从内外访问互联网就是跨网络的的行为,这时候就需要路由器来担任网关的角色,他的行为就叫路由。

三、家庭网络与因特网

在两个不同的家庭中通过路由器接入两台电脑,IP都是192.168.1.10同时访问互联网为使IP地址不冲屯冲屯,就要使用数据包从路由器发出时变成不同的IP,这个技术叫源地址转换技术(SNAT)。

源IP目标IP
(1)计算机发出192.168.1.1036.152.44.96
(2)路由器SNAT改成源IP成WAN口公网IP,发送数据出去,服务器收到了数据221.8.14.9136.252.44.96
(3)服务器处理数据,回复,把源IP作为目标IP发送回来36.152.44.96221.8.24.91
(4)路由器收到数据包,执行反向SNAT在把目标IP改成192.168.1.10发送给家中计算机36.152.44.91192.168.1.10

在这里插入图片描述
假设家庭中的两台电脑同时访问同一个网站,发送了两包数据到路由器上,路由器执行SNAT发送出去没什么问题,但是回来的数据包目表IP都是同一个,如何从中区分两台计算机的数据包所以这样看只关注IP地址是不行的,还需要增加一些确定性的标记,这是就需要把关联的属性往下扩展一层到传输层,以最常用的传输层协议TCP协议举例,TCP协议有两个关键属性源端口和目标端口,这时候源地址转换就变成修改源IP和源端口,并将修改后的端口号和源IP加源端口形成映射关系,在反向SNAT的时候改回。除了TCP协议外UDP协议也是同样的道理,通过IP加端口进行管理,但是常用来检测目标连通性的ping命令使用的是ICMP协议,没有端口信息,则需要使用协议中的type+code来代替端口进行关联,其他的协议也都是类似的道理,通过协议特定的标记来进行关联。
DNAT(目标地址转换),跟SNAT相反,DNAT是把目标地址修改的技术,如果内网计算机对外提供服务,公网上发过来的请求不能直接到达计算机,就需要路由器用DNAT技术帮助转发请求。

四、TCP协议与UDP协议

TCP协议和UDP协议都工作在传输层,他们的目标都是在程序间传输数据,数据可以是文本、视频、图片对于两种协议来说都是二进制数并没有多大区别。
TCP协议是基于连接,UDP协议基于非连接
TCP协议流程,有三个关键步骤,分别为3次握手、传输确认、四次挥手,三次握手是建立连接的过程,当客户端向服务端发起连接时会先发一包连接请求数据过去询问一下能否与你建立连接,这包数据我们成文SYN包,如果对端同意连接,则回复一包SYN+ACK包,客户端之后回复一包ACK包连接建立,因为这个过程中相互发送了三包数据,所以称之为三次握手,三次握手解决了网络信道不可靠问题。为了能在不可靠的信道上建立起可靠的连接,经过三次握手之后客户端和服务端都进入了数据传输状态。
TCP协议需要在不可靠的信道上保证可靠的连接。一包数据可能被拆成多包发送,如何解决丢包问题、如何处理乱序问题针对这些要求,TCP协议为每一个链接建立了一个缓冲区从建立连接后的第一个字节的序列号为0,后面每个字节的序列号就会增加1发送数据时从发送缓冲区取一部分数据组成发送报文,在其TCP头中会附带序列号和长度,接收端在收到数据后需要回复确认报文,确认报文中的ACK等于接收序列号加长度也就是下一包数据需要发送的起始序列号这样一问一答的发送方式能够使发送端确认发送的数据已经被对方收到,发送端也可以一次发送连续多包数据,接收端只需要回复一次ACK就可以,这样发送端可以把待发送的数据分割成一系列的碎片发送到对端,对端根据序列号和长度在接收后重构出来完整的数据。假设其中丢失了某些数据包在接收端可以要求发送端重发,以上过程不区分客户端和服务端,TCP连接是全双工的,对于两端来说均采用上述机制。
四次挥手
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端。
(4) 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

UDP协议是基于非连接的,发送数据就是简单的把数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系,正因为UDP这种简单的处理方式导致他的性能损耗非常少,对于CPU内存资源占用远少于TCP,但是对于网络传输过程中产生的丢包,UDP协议并不能保证,所以在传输稳定性上要弱于TCP。
TCP传输数据稳定可靠,适用于对网络通信质量较高的场景,需要准确无误的传输给对方,比如传输文件、发送邮件、浏览网页等。UDP的优点是速度快但是有可能产生丢包所以适用对实时性要求较高但是对少量丢包并没有太大要求的场景比如域名查询、语音通话、视频直播等,UDP还有一个运用场景就是隧道网络,如:VPN、在SDN中的VXLAN。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值