本文讲述了:软件开发的两种架构、什么是交换机、局域网、互联网、路由器,OSI七层协议、以及七层协议如何封包解包的过程👆
Client (客户端)<==========> Server(服务端)
应用程序示例:比如手机中可以直接打开的APP,拿网易云音乐示例,可以直接打开使用;电脑直接双击开的软件等;
这种架构,在软件开发的时候,开发的标准是自己定的;
"C" "S"
| 客户端软件 服务端
| 操作系统 操作系统
↓ 计算机硬件 <==========> 计算机硬件
通俗示例理解:例如我们要看一个电影,去某奇艺,说我要看大头儿子和小头爸爸,你给我播放,那么硬件就会发送给服务端的硬件,然后找到这个动画片文件播放
Browser (浏览器)<==========> Server(服务器)
应用程序示例:谷歌,火狐···
这种架构用户可以直接使用浏览器去访问互联网上的Web服务器,去获取想要的内容,一般来说,Web服务器后还有数据库服务器,Web服务器从数据库中获取数据,并返回给用户;
其实B/S架构的底层还是用到了C/S架构,浏览器充当了各个服务器的客户端;
如果使用这种架构开发,不像C/S架构开发的标准是自己定制的,而必须按照浏览器的标准来开发;
对于开发者就要考虑这样的问题,开发程序后,客户端和服务端之间是怎样数据通信的?是不是需要一个介质来连接起这客户端和服务端?
从最早的有线电话,到现在的笔记本电脑等是如何通信的?如果没有网络,你想看你基友的小电影只能去拷贝,或者去他家偷偷看,如果有网络,你直接让基友直接发即可(数据传输)
设备 | 通信介质 |
---|---|
有线电话 | 电话线互联 |
无线电话 | 信号发射器 |
大屁股电脑 | 网线 |
笔记本电脑 | 网卡 |
所以要想实现远程数据交互的前提是必须要有物理的连接介质,以及保障数据互通的安全协议等;
网络 = 物理链接介质 + 互联网通信协议
‘应’-‘表’-‘会’-‘传’-‘网’-‘数’-‘物’
各层协议 | 管理内容 | 协议 |
---|---|---|
物理层 | 010101 | |
数据链路层 | mac地址 | arp协议 |
网络层 | ip地址 | ip协议 |
传输层 | tcp\udp(端口,共65535) | TCP、UDP协议 |
应用层 | 数据 |
应用层(数据) --->传输层(TCP报头)[段]
--->网络层(IP报头)[包]
---->数据链路层(帧头)[帧]
----> 物理层(比特位0101)[位]
物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层。
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”。
其实就是提供一个物理连接接口(网线口 无线网卡)
主要有以下两个功能:
规定1:一组数据称之为一个数据帧
规定2:数据帧分成两部分 =》头+数据
head包含(18个字节):源地址与目标地址,该地址是mac地址
data包含(最短46个字节,最长1500字节 ):包含的是网络层整体的内容
规定3:规定但凡接入互联网的主机必须有一块网卡,每块网卡在出厂的时候都烧制好一个全世界独一无二的地址,该地址称为mac地址
广播:广播是去“寻找”主机;
单播:回应广播;
MAC地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示;
规定了接入互联网的计算机都必须有一个IP地址用于唯一标识;
数据帧 = 头+数据
eg:172.16.10.1 / 255.255.255.0
# 不加子网掩码默认为24(172.16.10.1/24)
计算机在同一个局域网,可以互联:
# 案例
计算机1-》172.16.10.1 / 255.255.255.0
局域网 = 172.16.10.0
计算机2-》172.16.10.2 / 255.255.255.0
局域网 = 172.16.10.0
# 如果两台计算机不在同一局域网,那么走网关传输
将ip地址解析成mac地址
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址(MAC地址)。
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
# 两台计算机在同一个局域网内
计算机1
计算机2
ARP:
1、计算二者网络地址,如果一样,拿到计算机2的mac地址就可以了
2、发送广播包
发送端mac
# 两台计算机不在同一个局域网内
计算机1
|
网关
|
计算机2
ARP:计算机二者网络地址,如果不一样,应该拿到网关的mac地址
IP地址+Mac地址可以标识全世界范围内独一无二的一台计算机;如果在同一个局域网内,IP地址只是用于回去mac地址;不在同一局域网,ARP协议获取的是网关的mac地址
补充->IPV6版本:能够表示出地球上每一粒沙子
TCP协议是流式协议,可靠协议,在连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务,用此协议传输比较可靠,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
TCP的可靠性可以这样理解,大白话:就像给女朋友发微信,发出去了就得等着她回我,双方不停的回复自己干嘛,就了解了对方的状态;
“三次握手,四次挥手”怎么完成? 其实3次握手的目的并不只是让通信双方都了解到一个连接正在建立,还在于利用数据包的选项来传输特殊的信息,交换初始序列号ISN。 3次握手是指发送了3个报文段,4次挥手是指发送了4个报文段。
发送数据必须等到对方确认后才算完成,才会将自己内存中的数据清除
效率低,可靠,如果需要效率的话用UDP协议(不需要链接,不需要对方确认)
当服务端大量处于TIME_WAT状态,表示正在经历高并发
第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。
第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态
服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
TCP报文
无连接的传输协议,该协议称为用户数据包协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。相比TCP而言速度快,但是不安全,无需确认,不管对方是否就收到,发送不管通道的状态,发出去就“摊牌了”;
大白话:就相当于我给基友发微信,发了我就去干别的事了,不管了;
端口就是队,端口其实就是为每个应用程序(进程)分了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。
就好比知道了ip和端口号,能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序;
大白话:房间的钥匙是ip,那么想使用房间内的电器(应用层序)的钥匙就是端口;
应用层对于开发来说主要是规定了程序的数据格式,都是人为自定义的协议标准;
该层为用于通信的应用程序和用于消息传输的底层网络提供接口。
自定义协议需要注意的问题:
1. 两大组成部分:头部+数据部分
头部:放对数据的描述信息(比如想发送给谁,数据的类型,数据的长度)
数据部分:想要发送的数据
2. 头部的长度必须固定
因为接收端要通过头部获取所接收数据的详细信息
HTTP协议
动态获取ip地址,基于udp协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。
通过dhcp获取过程:
以太网 | ip头 | udp头 | dhcp数据包 |
---|---|---|---|
1 | 2 | 3 | 4 |
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
根域名服务器:
www.163.com.
,com后面的点,就是根!
查找顺序:
本地DNS服务器 --》根DNS服务器 --》 13台顶级域名服务器
应用层协议:http/s协议
封包,七层协议
域名加端口:www.baidu.com:80
DNS域名解析,搞到ip
虚拟路径:/hammer/p135.html
参考博文:
【如写错,请指正,感谢】
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.cnblogs.com/48xz/p/15790045.html
内容来源于网络,如有侵权,请联系作者删除!