计算机网络自己总结

1.对网络的基础认识

<1>.组网方式

1).网络互联:使用集线器将少量主机连在一起 2)局域网(LAN):使用交换机和路由器将主机连接,可以自由组合三种方式:交换机,路由器,交换机+路由器 3).广域网

<2>.OSI七层模型

对协议的简单理解:本质上是数据格式的定义。而知名的数据格式,大家普遍遵循的规定,就属于协议
OSI七层模型:一种网络分层的设计方法论,比较复杂且不实用,落地几乎都是TCP/IP四层,五层模型

<3>.TCP/IP五层(四层模型)

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;(四.层封装分用)
对于一台路由器, 它实现了从网络层到物理层;(下三层封装分用)
对于一台交换机, 它实现了从数据链路层到物理层;(下两层分装分用)
对于集线器, 它只实现了物理层;

<4>.对封装分用的理解

封装:发送数据时,从高到低的顺序,按照对应的网络分层协议对数据进行包装

在这里插入图片描述

分用:封装的逆过程:接收数据时,从低到高的顺序,按照对应的网络分层协议,解析数据

2.网络数据传输

<1>局域网

(1)认识IP和MAC

IP的格式:xxx.xxx.xxx.xxx
注意: 局域网内(局域网IP):网段唯一,同一个网段,主机号唯一
公网(公网IP):公网IP是唯一的
和网卡硬件绑定的,全球唯一
作用:网络数据传输定位网卡硬件的位置,一个主机可能有多个网卡(例如蓝牙连接,无线连接,有线连接的网卡),电脑硬件定位数据发送的目的位置只能使用MAC
总结:

IP地址描述的是路途总体的起点和终点。(给人用的,网络主机的逻辑地址)
MAC地址描述的是路途上的每一个区间的起点和终点(给电脑硬件用的,网络主机的物理地址)

(2)网络数据传输的特性

封装分用——发送数据从高到低封装,接收数据从低到高分用
五元组:

源IP,目的IP,源端口,目的端口,协议号
DNS协议:
作用:域名转IP
主机/路由器:都存在DNS缓存
域名查询的方式:上图树形结构从下往上查找(缓存,域名服务器)。
先在主机/路由器的DNS缓存中找,如果找不到,依次向上

(3)网络数据传输流程

ARP/RARP协议:
主机中有ARP缓存表
ARP协议:IP转MAC
RARP协议:MAC转IP
注意:交换机和集线器自己是没有MAC地址的,都是通过转发(不会修改源MAC和目的MAC)
交换机有MAC地址转换表,可以根据MAC找到对应的端口,而集线器没有这个功能
1)网络互联的方式
在这里插入图片描述
ARP缓存表找到了:
1.主机1发送数据到主机3(http://主机3:80)
2.主机1查找本机的ARP缓存表,根据ARP协议,找到目的MAC
3.数据报由主机1,发送到集线器(数据报中的源MAC(主机1),目的MAC(主机3)真实的数据报
4.集线器转发数据报到除主机1的其他所有相连的主机(主机2,主机3)
5.主机2接收:数据报中,目的MAC不是我,丢弃
主机3接收,数据报中,目的MAC是我,接收
目的IP是我,交给对应端口处理,如果不是我,执行上述网络传输(一跳一跳的过程)
ARP缓存表没找到
1.主机1发送数据到主机3,http://主机3:80
2.主机1查找本机的ARP缓存表,发现找不到
3.主机1发送广播数据报(非真实数据,只是要求对应主机返回MAC:我要IP为主机3的MAC,谁是主机3,快告诉我)
4.集线器转发到主机2,主机3
5.主机2接收:要求的IP不是我,丢弃
主机3接收:要求的IP是我,返回我的MAC
6.主机1收到主机3的返回数据(IP,MAC)更新自己的ARP缓存表
7.主机1发送真实的数据到主机3(后面同上ARP缓存表找到了)
注意:使用集线器的缺陷
网络冲突,这样构成的网络区域叫冲突域/碰撞域(例如,房间里有多个人说话,那么其中某一个人说话就听不清楚了)

2).局域网交换机组网的方式
交换机的作用:
MAC地址转换表:保存连接的主机MAC和端口的映射,目的MAC是谁,直接转发到对应的端口(不像集线器,发送到所有端口),不会产生冲突域。
1.主机1发送数据到主机3 ,http://主机3:80
2.主机1查找本机的ARP缓存表,如果找到,主机1发送数据到主机3。如果找不到,发送广播数据报,让IP为主机3的告诉我,你的MAC
3.交换机转发到其他所有端口(广播)
4.主机2丢弃,主机3返回自己的MAC
5.交换机知道主机3的MAC,主机1知道主机3的MAC(更新ARP缓存表)
注意:上述五个步骤,都是根据IP找MAC,和集线器的流程相似,下面的步骤时根据MAC找端口
6.主机1发送真实数据给交换机
7.交换机查找自己的MAC地址转换表,通过MAC找端口,发送数据到对应的端口
8.主机3接收,目的MAC是我,目的IP也是我
这种网络数据传输的方式就像:先问张三的手机号,再打电话给张三,对别人没有影响

3)局域网交换机+路由器组网的方式
注意:单独由路由器组网的方式,和上述由交换机单独组网的方式相同
首先介绍路由器,这里介绍两种:
<1>LAN口连接局域网,为主机分配局域网IP,分配的局域网IP都是一个网段(路由器下连接多个主机的类型)
路由器还有个网卡:绑定局域网的IP,和下面连接的主机进行信息交互用的
在这里插入图片描述
<2>LAN口是网卡。每个LAN口都可以连接类似交换机组网的方式
在这里插入图片描述
主机上的网络信息:
在这里插入图片描述
第二种路由器组网方式:
在这里插入图片描述
1.主机1发送数据到主机2:http://192.168.2.y:8080/xxx
2.通过目的IP+子网掩码,计算出目的主机和本机是否在一个网段
3.如果是,不需要使用路由器,和上述使用交换机组网方式一样
4.如果不是,表示我主机1和交换机处理不了,要发送给网关转发(网关就类似于IP的管理者,能查询其他主机的IP)。如果ARP缓存表找不到网关mac,还需要先发送广播ARP请求分组,目的地址为网关ip,目的mac为FFFF(表示广播),网关会回复单播ARP响应分组告知自己mac。
5.数据报发送给网关设备
在这里插入图片描述
目的MC:通过路由器网关的IP在主机1的ARP缓存表中,获取网关的MAC
6.路由器接收到数据报,分用:物理层到网络层,网络层分用,所有可以获取到目的IP
7.路由器查找自己的ARP缓存表(IP找MAC)
8.找不到,路由器发广播,主机2在哪,告诉我你的MAC
9.有了MAC,直接发到主机3

<2>广域网传输流程

1.NAT和NAPT
NAT协议:局域网IP映射公网IP
NAPT协议:局域网IP+局域网端口映射----->公网IP+公网端口
2.传输流程
在这里插入图片描述
结合上图,理解广域网传输流程
首先:主机1发送http://www.baidu.com网络流程

传输流程
1首先主机1发送http请求,使用DNS协议:进行域名转IP
域名转IP:首先在本机DNS缓存表找,如果找不到---->向上查找------>如果根域名服务器也找不到,表示公网上没有该域名的主机

  1. 找到IP,数据报IP部分,PORT部分都有了:
    在这里插入图片描述
    3.根据目的IP计算是否和主机在同一个网段
    主机1的IP+子网掩码 计算出------>主机1的网段
    目的IP+子网掩码 计算出------->目的主机的网段
    通过上述计算,判断目的IP和主机是否在同一个网段

4.如果是同一个网段,和局域网传输一样
如果不是同一个网段:发送数据到网关
找网关的MAC:
在这里插入图片描述
5.找到网关的MAC之后,将http数据重新封装,交由交换机转发
交换机转发:在MAC地址转换表(MAC映射端口),通过目的MAC找端口(交换机的屁股口)
注意:这个过程没有封装和分用

注意:前五个步骤,和路由器组成的局域网传输流程一样 参考:局域网传输

6.路由器接收,分用数据报
注意:路由器会根据最短路径算法,计算出下一个发送数据的设备,会离目的IP更近一步
在这里插入图片描述
7. 上述步骤之后,数据报由局域网到广域网进行传输
路途中的设备:
在这里插入图片描述
8. 数据报到达百度服务器之后
在这里插入图片描述
**9.**数据由百度服务器返回,路途上经过的设备传输流程和步骤七相同(但是不一定是原路返回)
**10.**路由器1接收响应数据(对接收的数据进行分用,修改,封装)
在这里插入图片描述
11. 之后的步骤,和局域网传输相同
主机接收数据报,分用

3.网络层IP,ARP,ICMP,IGMP协议

<1>协议概览

在这里插入图片描述
ARP为IP提供服务,IP为ICMP提供服务

<2>IP协议

1.协议头格式
在这里插入图片描述
简单了解:
4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.

8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位 TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要(应用层协议需要不同安全/效率需求,此时可以设置服务类型来满足)

下面三个字段都与数据链路层MTU相关:
在这里插入图片描述

<3>ARP协议

ARP/RARP协议:
主机中有ARP缓存表
ARP协议:IP转MAC
RARP协议:MAC转IP

集线器什么都没有,所以构成的网络区域叫冲突域/碰撞域
交换机有MAC地址转换表,但是自身没有mac地址
路由器既有MAC地址转换表,自身也有mac地址

本机arp高速缓存存储的都是局域网内部的mac地址

先用自己的子网掩码与目的ip地址相与下,是否在自己网段内,如果不在自己网段,则需要先发消息到默认网关(如果本机ARP缓存表没有默认网关,还需要在之前先发送ARP询问默认网关的MAC地址)
默认网关指的是路由器的一个接口的地址,只有通过这个接口才能跟外部通信
主机1发送主机3流程图:
在这里插入图片描述

ARP协议使用过程:
在这里插入图片描述

<4>ICMP协议

动态主机匹配值协议DHCP是 应用层 协议,使用 客户/服务器 方式,客户端跟服务端通过 广播 方式进行交互,基于 UDP
1.主机广播DHCP发现报文 “有没有DHCP服务器呀” 试图找到服务器
2.DHCP服务器广播DHCP提供报文 “有!有!” 服务器分配给主机一个IP地址以及相关配置,先到先得
3.主机广播DHCP请求报文 “我用你给我的IP地址拉” 主机向服务器请求提供IP地址
4.DHCP服务器广播DHCP确认报文 “用吧” 正式给IP地址分配给主机

ICMP5种报文:
1.终点不可达,无法交付
2.源点抑制,拥塞丢数据
3.时间超过,TTL=0,
4.参数问题,首部字段有问题
5.改变路由(重定向),值得更好的路由

ICMP报文格式:
在这里插入图片描述

4.传输层UDP和TCP

<1>UDP协议
UDP协议端格式:
在这里插入图片描述
16位UDP校验和作用:类似于藏头诗,双方约定好的校验数据,进行数据校验

UDP的特性:
1.无连接:没有建立连接就发数据
2.不可靠:没有类似TCP保证数据传输的安全机制,(连接管理机制,确认应答机制,超时机制
,)效率更高。
3.面向数据报:只能一次接收(系统级别的操作:调用系统函数)
4.没有发送缓冲区(发了消息就不管),有接收缓冲区
5.数据最大为64k
在这里插入图片描述
发送缓冲区:主机1发送完数据,发出之后就不管了
接收缓冲区:
如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个字节; 而不能循环调用10次recvfrom, 每次接收10个字节;
所以,接收数据的时候,发送100个字节,系统读取只调用一次,但是可以读取多次发来的其他100字节。
但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致; 如果缓冲区满了, 再到达的UDP数据就会被丢弃;

<2>TCP协议(可靠的传输协议)
三大特点:面向连接(是指客户端与服务端进行通信前需要先建立连接,用于保证可靠性和流控机制的信息,包括socket,序列号及窗口大小被称为连接,socket由ip跟端口号组成,序列号用来解决乱序问题,窗口大小用来做流量控制的),可靠性(如何保证可靠性,一是状态性,tcp会记录信息的发送状态,tcp会记录信息的发送状态。二是可控性,tcp会根据状态情况控制自己的行为,例如当TCP认为丢包了就会通知客户端重传),面向字节流(以字节流的方式进行数据传输)
(1)TCP相关概念
TCP协议:可靠的传输协议,安全,效率(有连接的可靠传输协议)
设计TCP协议的理念:非100%安全,保证可承受范围内的安全,尽可能的提高网络传输数据的效率
TCP协议端格式:
在这里插入图片描述
六位标志位:
URG: 紧急指针是否有效
ACK: 确认号是否有效
PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走
RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段
重点掌握ACK,SYN,FIN

(2)确认应答机制
在这里插入图片描述
主机A发送数据给主机B,每个数据都带了数据序号,主机B返回ACK应答
每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据; 下一次你从哪里开始发
作用:
1.保证安全:保证‘我’发送的消息,对方必须确认并恢复
2.保证多条数据确认信息的安全(告诉发送者,这次回应是对哪些数据,下次数据发送应该从什么时候开始)
(3)超时重传机制(安全机制)
超时重传机制触发:主机A发送数据给主机B,如果主机A在一个特定的时间间隔内没有收到来自主机B的确认应答,就会进行数据重发。

没有收到确认应答的情况:1.主机A的数据报在发送的过程中丢了。2.主机B的ACK应答丢了

超时时间的确定:TCP会根据当时的网络状态,动态的计算数据发送的速度,得到单次数据报发送的最大生存时间(MSL),超时时间即为(2MSL)

了解:如果一直接收不到ACK,超时时间会如何处理?
Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时时间都是500ms的整数倍.
如果重发一次之后, 仍然得不到应答, 等待 2500ms 后再进行重传.
如果仍然得不到应答, 等待 4500ms 进行重传. 依次类推, 以指数形式递增(2的指数倍).
累计到一定的重传次数, TCP认为网络或者对端主机出现异常, 强制关闭连接.

(4)连接管理机制(安全机制)
在这里插入图片描述
1.建立连接------>TCP三次握手:
TCP------>三次握手的流程
1.主机A发送syn到主机B,要求建立a到b的连接。此时主机A的状态为syn_sent
2.主机B回复ack+syn(这里的ack和syn数据报本来是两个,但是仅标志位不同,所以可以合并,为什么不是四次的原因),要求建立b到a的连接,主机B的状态为syn_rcvd
3.主机A回复第2步syn的ack。主机A的状态为established,建立A到B的连接
主机B接收到第3步的数据报,建立B到A 的连接,主机B的状态置为established
TCP------>三次握手中的问题:
1.syn为什么有两个?
双方的连接状态会持续,且连接是有方向的
2.第二步中,为什么是ack+syn?
本质上是一个发ack应答,一个发syn请求,而且是方向一致的两个数据报,可以合并
3.第三步中,ack确认应答哪个?
应答第二步的syn

2.断开连接------>TCP四次挥手:

TCP------>四次挥手的流程
1.主机A发送fin到主机B,请求关闭a到b的连接
2.主机B回复ack,主机B的状态置为close_wait
3.主机B发送fin到主机A,请求关闭b到a的连接
4.值即A回复ack(第三步的fin),状态置为time_wait
主机B接收到第四步的数据报,状态置为closed
主机A经过2MSL(超时等待时间)之后,状态置为closed

TCP------>4次挥手中的问题
1.第2步和第3步为什么不能和3次握手流程一样,进行合并
原因:第2步是TCP协议在系统内核中实现时,自动响应的ack
第3步时应用程序手动调用close来关闭连接的
程序在关闭连接之前,可能需要执行释放资源等前置操作,所以不能合并(TCP协议实现时,没有这样进行设计)

2.第3步中,主机A为什么不能直接设置为closed状态
原因: 第4个数据报可能丢包,如果直接置为closed,丢包后无法重新发送数据。
主机B达到超时时间之后,会重发第三个数据报,然后要求主机A再次回复ack

3.服务器出现大量的close_wait状态,是为什么?
服务端没有正确的关闭连接(程序没有调用close,或者没有正确使用)

(5)滑动窗口(效率)
(6)流量控制机制(安全机制)
(7)拥塞控制机制(安全机制)
(8)延迟应答机制(效率)
(9)捎带机制(效率)
<3>TCP的总结
(1)TCP特性
(2)面向字节流
(3)粘包问题
<4>UDP VS TCP
(1)UDP和TCP的特性
(2)如何使用UDP进行可靠传输

5.HTTP和HTTPS

<1>HTTP
(1)Http的前置知识
1)网络数据传输
2)认识URL
(2)HTTP
1)域名
2)http协议格式
3)http请求方法
4)http状态码
5)http头信息
<2>HTTPS

6.正向代理和反向代理

<1>.正向代理服务器
<2>.反向代理服务器

7.网络面试题

<1>.说一说TCP/IP模型,以及都做了哪些事情
<2>.说一说TCP的三次握手四次挥手
<3>IPV4和IPV6的区别
<4>TCP和UDP的区别
<5>如何用UDP进行可靠传输
<6>正向代理和反向代理的区别
<7>说说HTTP和HTTPS
<8>https中SSL握手的过程
<9>DNS解析(DNS找IP)
<10>GET和POST的区别
<11>常见的状态码
<12>输入一个URL到浏览器中,会发生什么

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值