web-TCPI/P

web-TCPI/P

  • 总揽!!!
  • 软件安装
    • netwox
    • wrieshark
  • 1. 概念
    • 1.1 网卡
    • 1.2 网络设备
      • 1.2.1 交换机
      • 1.2.2 路由器/网关
    • 1.3 网络协议
    • 1.4 网络体系
      • 1.4.1 以太网
        • 1.4.1.1 拓扑结构
        • 1.4.1.2 以太网工作机制-没细看
  • 2. TCP/IP
    • 2.0 OSI 七层模式
    • 2.1 协议层次结构
      • 2.1.1 应用层
      • 2.1.2 传输层
        • 2.1.2.1 端口和套接字???
          • 端口与其他协议的区别
          • 套接字socket
      • 2.1.3 网际层(网络层)
      • 2.1.4 网络访问层(链路层)
    • 2.2 IP
      • 2.2.1 数据传输过程
      • 2.2.2 子网
      • 2.2.3 域名
      • 2.2.4 具体传输过程!!!
      • 2.2.5 IP数据格式
      • 2.2.6 DNS与IP网络传输
    • 2.3 ARP
      • 2.3.1 工作机制
      • 2.3.2 MAC/IP的区别
      • wireshark/ARP
    • 2.4 ICMP
      • 2.4.1 ping
      • 2.4.2 路由跟踪
    • 2.5 TCP
      • 2.5.1 三次握手和四次挥手???
        • 三次握手
        • 四次挥手
      • 2.5.2 三次握手四次挥手 - 补充
        • 2.5.2.1 三次握手
        • 2.5.2.2 传输数据
        • 2.5.2.3 四次挥手
        • 2.5.2.3 四次挥手/TIME_WAIT
    • 2.6 UDP
    • 2.7 web
    • 2.8 http-web
    • LAN/ WAN / WLAN / VLAN

总揽!!!

https://zhuanlan.zhihu.com/p/346889307

https://www.bilibili.com/video/BV1uK411C7TZ?p=1&vd_source=7155082256127a432d5ed516a6423e20

软件安装

netwox

~$ sudo apt install netwox
~$ cd /usr/bin/netwox

http://c.biancheng.net/view/6378.html

wrieshark

~$ sudo apt install wireshark
~$ cd /usr/bin/wireshark
http://c.biancheng.net/view/6379.html

1. 概念

1.1 网卡

网卡不是网关,网关是一般指路由器

网络适配器(与MAC地址有关)

连接计算机和传输介质的接口
传输介质:如网线等(传输介质(物理介质)决定电信号的传输性能)

MAC地址就是网卡的序列号

网卡类型

物理网络适配器

有线网卡、无线网卡

虚拟网络适配器

宽带拨号、VPN

注意还有虚拟机配置的ip地址

ipconfig:
Lo表示虚拟网络适配器
Eth表示以太网网络适配器

1.2 网络设备

交换机、路由器

发送和接受数据的终端设备

1.2.1 交换机

可以将多个网络设备组成一个局域网
只用用于同一个局域网下的终端通信(也就是不能连接多个局域网)

1.2.2 路由器/网关

网关一般指的是路由器
网关不是主机
网关是子网与子网之间的桥梁

一个路由器最少有两块网卡
路由器的作用就是将要一个网段的数据转发给另一个数据

网关与IP
(见下面的IP地址解释)
https://www.zhihu.com/question/362842680/answer/951412213

只要目的ip不是当前局域网,那么电脑上的操作系统就会自动的将这个数据转发给当前局域网中的默认网关
网关,可以理解为一个电脑,这个电脑连接另外一个网段

例如:如果一台电脑发送数据的目标IP不再局域网内(一个网段内),那么就把数据发送给该电脑设置的默认网关,(一般把路由器的IP设置为这台电脑的默认网关)
web-TCPI/P_第1张图片

路由与组网
web-TCPI/P_第2张图片

1.3 网络协议

数据传输规则,最常用的TCP/IP

TCP/IP 不是一个协议,而是一个协议族(协议栈)的统称
TCP、IP、ICMP、HTTP等

1.4 网络体系

以太网、无线网等
http://c.biancheng.net/view/6381.html

1.4.1 以太网

现有局域网最常用的通信协议标准,网络结构为星型

1.4.1.1 拓扑结构

计算机和通信设备为,传输介质为线
点-线组成拓扑结构

两种形式:

  • 总线型:所有计算机通过一条同轴线缆进行链接
  • 星型:所有计算机都链接到一个中央网络设备(如交换机等)

1.4.1.2 以太网工作机制-没细看

http://c.biancheng.net/view/6383.html

http://c.biancheng.net/view/6391.html

2. TCP/IP

2.0 OSI 七层模式

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

web-TCPI/P_第3张图片

2.1 协议层次结构

https://zhuanlan.zhihu.com/p/346889307
http://c.biancheng.net/view/6377.html

https://www.bilibili.com/video/BV1uK411C7TZ/?p=6&spm_id_from=pageDriver&vd_source=7155082256127a432d5ed516a6423e20 !!! 太重要了!!!
https://www.bilibili.com/video/BV1uK411C7TZ/?p=7&spm_id_from=pageDriver&vd_source=7155082256127a432d5ed516a6423e20 !!! 太重要了!!!

应用层: HTTP、FTP、SMTP
传输层: TCP、UDP
网际层(网络层): IP、ARP、路由器
网络访问层(链路层): 以太网、网桥

应用层

定义数据格式,并按照对应的格式解读数据

传输层

定义端口,确认主机上的应用程序身份,将数据包传输给对应的应用程序

网络层

定义IP地址,确认主机所在网络位置,通过IP、ARP协议进行MAC寻址,对外网数据包进行路由转发

链路层

分组、定义以太网数据帧,确认主机物理地址,传输数据

每一层都呼叫他的下一层所提供的协议来完成自己的需求
每一层都根据特定的协议与不同层进行通信,协议之间的通信都最终都要转化为0-1的电信号,通过物理介质传输才能到达目的主机

web-TCPI/P_第4张图片

过程

(配送车就是物理介质,配送站就是网关, 快递员就是路由器,收货地址就是IP地址,联系方式就是MAC地址

当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上了双方的IP地址,确认了双方的网络位置;最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。

2.1.1 应用层

在没有应用层的时候,传输的数据是字节流的形式
应用层的作用是通过定义的协议规范数据格式,并按照对应的格式解读数据

2.1.2 传输层

区分数据包达到主机后所属的进程
为网络应用程序提供接口
为端到端链接提供流量控制、差错控制、服务质量等管理服务
提供多路复用、多路分解机制

确认数据传输以及进行纠错处理
TCP协议、UDP协议

数据传输类型

有连接:两主机建立通信 TCP协议
无连接:无需双方事先建立通信线路 UDP协议

2.1.2.1 端口和套接字???

为了区分同一个主机上不同应用程序的数据包
https://blog.csdn.net/Cristiano2000/article/details/119190238

端口与其他协议的区别
  • 在数据链路层中,通过MAC地址来寻找局域网中的主机
  • 在网际(网络)层中,通过IP地址来寻找网络中互连的主机或路由器
  • 在传输层中,需要通过端口进行寻址,来识别同一计算机中同时通信的不同应用程序
套接字socket

应用程序通过套接字向网络发出请求或应答网络请求,使主机间或者一台计算机上的进程间可以通讯

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题

多个TCP连接或多个应用程序可能需要通过同一个TCP协议端口传输数据
套接字的作用就是区分不同应用程序进程间的网络通信和链接

套接字=IP+端口

https://blog.csdn.net/L_fengzifei/article/details/124192461

2.1.3 网际层(网络层)

提供了主机之间的逻辑地址,即通过寻址的方式,把数据包从一个主机发送到另一个主机
负责数据的传输,路径及地址选择

IP协议、ARP协议、路由协议

IP协议
IPv4和IPv6

用于区分源主机和目标主机是否属于一个网络,IP地址

ARP协议

用于解析地址,根据IP地址获取MAC地址
ARP的MAC寻址功能限制在一个子网内

路由协议

根据IP协议判断两主机是否在一个子网下,如果不在一个子网,以太网就将数据包转发给本子网的网关进行路由

2.1.4 网络访问层(链路层)

对电信号进行分组,并组成数据帧,然后采用广播的形式,通过物理介质发送数据包到目标地址

网络访问层

物理层

用于提供传输数据的通路和可靠的环境
对应网络适配器,即网卡(虚拟或物理)

数据链路层

介于物理层和网络层之间,用来为网络层提供数据传输服务
链路层定义了数据传输的起始位置;
并且通过一些规则来控制这些数据的传输,以保证数据传输的正确性;

包括两个子层
MAC(介质访问控制):提供与网络适配器的接口。网络适配器的驱动程序称为MAC驱动,网卡的硬件地址称为MAC地址
逻辑链路控制LLC:对经过子网传递的帧进行错误检查,并且管理子网上通信设备之间的链路

MAC地址

即物理地址
一种标识符,用来标记网络中的每个设备(网络内传输的所有数据都会包含发送方和接受方的物理地址)
物理地址只有在当前局域网内有效,所以接受方的物理地址都必须存在于当前局域网内,否则会导致发送失败
MAC地址 不等于 IP地址
MAC地址只能用于局域网内,不能跨越,且使用MAC传输数据很麻烦

2.2 IP

公有地址:可以上网
私有地址:不可直接上网(192.168.xxx.xxx),需要转接
ping 127.0.0.1,用于判断当前设备是否具有网络功能

IP地址为互联网上的每个网络和每台主机分配一个逻辑地址,以此来屏蔽物理地址的差异

每个计算机都有对应的IP地址

IP地址=网络ID+主机ID

网络ID: 同一个物理网络上的所有主机都使用一个网络ID。用于识别书记所在的网络
每个网络终端设备有一个主机ID。用于识别所属网络的主机

IP地址一共32位:

政府机关:8(网络ID)+24(主机ID)

0.0.0.0~127.255.255.255
学校属于政府机关

中型企业:16(网络ID)+16(主机ID)

128.0.0.0~191.255.255.255

个人:24(网络ID)+8(主机ID)

192.0.0.0~223.255.255.255

还有隐藏地址类型http://c.biancheng.net/view/6407.html

2.2.1 数据传输过程

在网络中传输,通过识别IP地址中的网络ID,从而将数据发送到正确的网络中,然后再根据主机ID将数据发送到目标主机上

简单逻辑:数据通过网关找到对应的网络,然后再由网关分配

高级方法:将网络划分为更小的网络,即进行子网划分

2.2.2 子网

子网划分
IP地址=网络ID+主机ID
IP地址=网络ID+子网ID+主机ID
将主机ID划分为子网ID和主机ID

子网ID: 用于寻找网络中的子网
主机ID:用于寻找子网中的主机

子网掩码

用来指明地址中多少位用于子网ID,保留多少位用于实际的主机ID

子网掩码的作用:用于判断不同IP地址是否处于同一个网段下

2.2.3 域名

https://blog.csdn.net/z19950712/article/details/111473085

2.2.4 具体传输过程!!!

源地址主机 --> 目标地址主机

在打包数据帧时,发送方和接受方的IP地址都是已知的

同段网段下

目标IP地址被ARP协议解析为MAC地址,然后根据MAC地址,源主机直接把是数据包发给目标主机

不同网段下:

网关(一般为路由器)的IP地址被ARP协议解析为MAC地址,根据该MAC地址,源主机将数据包发送到网关
网关根据数据包中的网段ID寻找目标网络,如果找到,将数据包发送到目标网段,如果没找到,重复步骤1,将数据包发送到上一级网关
数据包经过网关被发送到正确的网段中,目标IP地址被ARP协议解析成MAC地址,根据该MAC地址,数据包被发送到目标地址的主机

2.2.5 IP数据格式

IP数据报文=报头+数据
报头是必须有的,包括原始IP地址、目的IP 地址等

版本,双方使用的IP协议版本必须一致,IPv4和IPv6
http://c.biancheng.net/view/6411.html
协议:该数据携带数据所使用的协议类型,TCP、UDP、ICMP
源地址
目的地址

数据部分:传输层的数据,保存TCP、UDP、ICMP、IGMP数据,长度不固定

2.2.6 DNS与IP网络传输

DNS服务器,其实可以认为是一台IP注意,当访问http的内容时,会根据DNS协议解析域名,找到域名对应的IP地址,再进行TCP/IP传输
web-TCPI/P_第5张图片

2.3 ARP

地址解析协议

用于网际层(网络层)和网络访问层(链路层)之间的链接,通过IP地址向MAC地址转换
数据传输时,必须通过ARP协议获取目标IP地址对应的MAC地址

同一网段下,两终端通过MAC地址定位
不同网段下,两终端通过IP地址定位

根据arp协议解析目标(目的)IP的MAC地址(目的地址)

2.3.1 工作机制

http://c.biancheng.net/view/6388.html

2.3.2 MAC/IP的区别

在这里插入图片描述

wireshark/ARP

web-TCPI/P_第6张图片

2.4 ICMP

控制报文协议

用于在IP主机和路由器之间传递控制消息,描述网络是否通畅,主机是否可达、路由器是否可用等网络状态
IP协议在数据传输时存在不可靠、无连接等特点,
ICMP协议的数据包不传输用户数据

数据在发送目标主机的过程中,通常会经过一个或多个路由器。传输过程中会存在问题导致数据包无法发送到目标主机上。ICMP协议通过跟踪消息,并把问题反馈给源主机,就能够在传输的过程中发现在哪个环节出现了问题

2.4.1 ping

ICMP协议可以用来探测目标主机,判断目标主机是否启用
ping命令利用ICMP协议,发出要求回应的信息,如果目标主机的网络功能没有问题,就会回应小时,从而得知主机是否运行正常

在这里插入图片描述
web-TCPI/P_第7张图片

web-TCPI/P_第8张图片

2.4.2 路由跟踪

识别一个设备到另一个设备的网络路径

traceroute命令用来检测发出数据包的主机到目标主机之间所经过的网关
通过设置探测包的TTL值,跟踪数据包到达目标主机所经过的网关,并监听来自网关ICMP的应答

traceroute ip地址/域名

单工

只发不收:收音机

半双工

同一时刻只能收或发

全双工

同一时候可以收或发

2.5 TCP

传输控制协议,面向连接,可靠

客户端:发送数据请求
服务端:接受数据响应

服务端要开启监听端口,客户端才能连接通信

TCP协议同样定义端口,用于表示应用程序身份,实现端口到端口的通信
TCP数据包没有长度限制
TCP发送的每个数据都必须得到接收方的应答才认为传输成功 – 超时传输、数据校验、流量控制,阻塞

全双工的

2.5.1 三次握手和四次挥手???

三次握手

目的就是申请内存、建立连接
connect 连接时,在还没有发送实际数据时,也会发送一个应答数据

客户端发送应答数据,
服务器对应答数据+1,服务器发送+1的应答数据,除了+1的数据还会发送应答额外数据,给客户端;
对+1的数据进行验证,如果数据一致,客户端认为服务端已经准备好了 ;并将额外的应答数据+1,发送给服务端;
服务端对+1的额外数据进行验证,如果诗句一致,服务端认为客户端准备好了
web-TCPI/P_第9张图片

web-TCPI/P_第10张图片

四次挥手

web-TCPI/P_第11张图片

2.5.2 三次握手四次挥手 - 补充

web-TCPI/P_第12张图片

  • 序号seq:

32位,标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记

  • 确认号ack

32位,ack=seq+1 ,实际上ack=seq+传输的字节数+1(加不加1看实际的情况,wireshark冲实际就没有加)
确认号(与收发的字节数有关) 不等于 确认位(0或1属于标志位)

  • 标志位

每个标志位占1位
URG : 紧急指针有效
ACK:确认需要有效
PUSH:接收方应该尽快将这个报文交给应用层
RST:重置连接
SYN:建立一个新连接
FIN:断开一个连接

2.5.2.1 三次握手

web-TCPI/P_第13张图片

客户端调用socket()函数创建套接字后,没有建立连接 处于closed状态
服务端调用listen()函数后,套接字进入监听状态,且会在执行accept()函数后阻塞

  • 客户端connect,TCP组建一个数据包(SYN包)设置SYN标志位(表明该数据包是用来建立同步连接的),生成一个随机序号seq(seq1)(表示该数据包的序号),组包完成后向服务端发送数据包,进入SYN-SEDN状态(SYN=1 ACK=0 seq=x)
  • 服务端接收到数据,发现SYN标志位被设置(表明这是客户端发来的建立连接的请求数据包((第一次握手)传输过程中不设置SYN标志位)),随之服务端组建一个数据包(SYN包)并设置SYN和ACK(确认位)标志位(SYN标志位 表示该数据包用来建立连接(第二次握手))(ACK确认位标志 表示确认收到了刚才客户端发送过来的数据),随之再生成一个随机序号seq(seq2)(不等于客户端的seq(seq1)),将客户端数据包序列号+1(seq1+1)作为ack确认号,组包完成后,将数据包发送,进入SYN-RECV状态,SYN=1,ACK=1,seq=y,ack=x+1
  • 客户端收到服务端的数据,发现(服务端数据包中)SYN标志位和ACK标志位被设置(表明这是服务端发来的 确认包),进一步检测ack确认号是否等于seq(seq1)+1,等于则说明一次握手成功,且正在进行第二次握手。客户端继续组包(此时不再是SYN包),并设置ACK确认位标志位(表示客户端正确接收了服务端发来的 确认包,并将seq(seq2+1)作为确确认号ack,组包完成客户端发送数据,进入ESTABLISED状态,SYN=0,ACK=1,seq=x+1(说明此时不带数据),ack=y+1
  • 服务端接收到客户端的数据包,发现(客户端数据包中)ACK标志位被设置(表明这是客户端发来的 确认包),并**检验ack是否等于seq2+1,**成功则进入ESTABLISED状态
  • 客户端和服务端都进入到了ESTABLISED状态,表明三次握手成功,建立连接成功,可以收发数据
    (最重要的是ack确认号,计算机会记录下自己发送的数据报序号seq,然后当收到对方的数据包后,检验ack=seq+1 成立则说明对方正确收到了自己的数据包)

2.5.2.2 传输数据

注意

三次握手时,和实际接收发送数据时,ack确认号不同,三次握手ack确认号+1,收发数据ack确认号不加1
发送端只有再收到接收端传回的ACK确认包后,才会清空输出缓冲区的数据

超时重传

TCP面向连接,为了保证数据能够准确、不丢失到达目标IP,每次需要接收端回传ACK包,告诉发送端正确收到了,这样发送端才知道数据被传输成功
如果接收端没有或发送错误的ACK包,则发送端重新发送数据,直到接收端回传正确的ACK包
为了完成数据的重传,TCP套接字每次发送数据包时都会启动定时器,如果在一定事件内没有收到接收端回传的ACK包,那么定时器超时,数据包重传
数据重传次数根据系统业务有所不同

2.5.2.3 四次挥手

web-TCPI/P_第14张图片

  • 客户端调用close函数后,想服务器发送FIN包(表示完成需要断开连接),进入FIN_WAIT_1状态
  • 服务器收到数据包后,检测到设置了FIN标志位,知道要断开连接,想客户端发送ACK确认包,进入CLOSE_WAIT状态(服务器收到请求后并不是立即断开连接,而是先想客户端发送确认包,告诉客户端知道了,且服务端需要准备一下再断开连接)
  • 客户端收到服务端发来的确认包,进入FIN_WAIT_2状态,等待服务器准备完毕后再次发送数据包
  • 等待片刻,服务端准备完毕,可以断开连接,然后在主动向客户端发送FIN包,告诉客户端准备完毕,可以断开连接(此时是准备断开连接),然后进入LAST_ACK状态
  • 客户端收到服务端的FIN包后,再向服务端发送ACK包,告诉服务端可以断开连接,然后进入TIME_WAIT状态(此时客户端没有真的断开连接)
  • 服务端收到客户端的ACK确认包,断开连接(此时服务端才是真正的断开连接),关闭套接字,进入CLOSE状态

2.5.2.3 四次挥手/TIME_WAIT

客户端最后一次发送ACK包后进入TIME_WAIT状态,而不是直接进入CLOSE状态关闭连接
客户端最后一次想服务端回传ACK包时,有可能因为网络问题导致服务端收不到,服务端会再次发送FIN包,如果这时客户端没有进入WAIT状态,而是完全关闭了连接,那么服务器无论如何也收到了ACK包,则不知道客户端的信息,所以客户端需要等待片刻,确认对方收到ACK包后才能进入CLOSE状态
报文最大生存时间MSL,TIME_WAIT=2MSL,ACK包到达服务器需要MSL时间,服务器重传FIN包也需要MSL事件,2MSL是数据包往返的最大时间,如果2MSL后还未收到服务端重传的FIN包,则说明服务端已经收到了ACK包

2.6 UDP

无连接协议,不可靠

UDP协议定义端口,为主机上的每个应用程序制定端口,规定数据包必须加上端口信息,最终数据包根据端口定位应用程序
UDP数据包有长度限制

2.7 web

  • 前端:提供用户界面,用于给用户进行观看和操作

html:界面显示,(静态)
css:文档控制显示,(静态)
资源文件:图片、视频,(静态)
js脚本:前端动态功能,(动态)

html、css、js都是部署在后端的

  • 后端:服务进程、处理数据请求、分析等

静态文件服务方案:html、css、js文件存储在什么地方,使用什么服务提供给前端浏览器
API接口设计:定义前端和后端交互接口规范。REST API
数据库存储方案:选择什么样的数据库(关系型、非关系型)
数据库表结构设计:增删改查
缓存业务、异步任务
云存储
大数据分析

2.8 http-web

超文本传输协议
http协议是基于TCP协议的,客户端和服务端必须首先要建立TCP连接
http协议中,服务端不能主动先发送信息给客户端

LAN/ WAN / WLAN / VLAN

  • LAN

局域网
接内部IP地址
相当于交换机接口

  • WLAN

广域网
接外部IP地址,指出口,转发来自内部LAN接口的IP数据包
想当于路由器接口

  • VLAN

虚拟局域网
是基于有线局域网的,将一个物理上的大局域网,分割成几个小的独立无干扰的小局域网

  • WLAN

无线局域网
通过无线传输数据
可以认为就是WIFI

你可能感兴趣的:(计算机网络,web)