网络架构和OSI7层协议

网络架构

单机

  • 单机游戏

以下基于网络

CS架构

  • 客户端游戏

  • CS----->client(客户)/server(服务)

  • 你自己是客户端:消费----->服务端:收钱

服务端一个够了,客户端可以有多个

服务端和客户端都是应用程序,那么两者都可以存储数据,优劣势:

  • 服务端存储数据:很多人都可以用,一次更新,其他人还是可以直接拿,数据安全

  • 客户端存储数据:快,非常快,但如果本地保存账户密码,安全性特别低,客户端不联网,数据不更新

BS架构

  • 网页游戏

  • BS------>browser(浏览器)/服务端

客户端(浏览器)/服务端,程序放在浏览器上

 

 

互联网和互联网的组成

边缘部分:客户端、服务端,这些普通的计算机,负责接收传送数据

核心部分:传输网络的设备,路由,基站,负责数据的运输

科普版

  1. 打开浏览器

  2. 输入网址(www.taobao.com)----->地址指向淘宝的服务端

  3. 按下enter键客户端吧www.taobao.com解析成淘宝的地址(杭州XXXXXXXX)

  4. 发送一条指令给淘宝,让淘宝把数据发给你

  5. 客户端渲染数据

互联网的组成

硬件:提供给你网络

软件:应用程序,完成具体的任务

 

OSI七层协议(**********************)(面试常问)

  • 互联网由硬件和软件组成,传输数据,只能传输电信号,1和0,OSi协议把0和1从无意义的东西转换为有意义的东西

物理层

计算机与计算机之间传输数据

  • 光缆/网线:传输信号,链接两台计算机,如果有一根网线能从美国连到中国,那么只要物理层就够了(很多军事部门就是专线)

数据链路层

让同一局域网下的计算机连在一起

把1011010101101010100100000变得有意义,分组,没几个一组

以太网协议:规定物理层中传输的0和1的格式

head:

收件人地址:

数据类型:

发件人地址:

data:内容

  • 发件人地址就是mac地址,计算机网卡的地址,这个地址固定不变,并且唯一,每一台电脑都有自己固定的mac地址

  • 广播:你一定知道自己的mac地址,还有收件人的mac地址通过某一台设备(交换机),但是交换机不知道mac地址对应的计算机是那一台,交换机会以广播的形式发给所有计算机,收件人的计算机收到就会解析这条命令,拿到内容了之后交换机会记录两个mac地址

以上基于局域网

 

网络层

让不同局域网下面的计算机连在一起

叫做IP地址,只知道mac地址无法连接其他局域网内的计算机,因为mac地址只被交换机识别,然后不同局域网的交换机不一样,所以现在定义一个新的地址表名是哪个局域网,通过路由器

在数据链路层的基础上包一层IP头

已经知道了淘宝的IP地址和mac地址,你会把自己mac地址和IP地址一起发送过去,路由会接受淘宝的IP地址,路由发送的淘宝的IP地址和mac地址,自带mac地址(路由器的)和IP地址(路由器的IP地址)

mac地址(局域网)+IP地址(互联网)就能找到全世界独一无二的电脑

传输层

组织网络带来的数据

端口号,找到一个固定的应用程序,一个端口号对应一个应用程序

mac地址(局域网)+IP地址(互联网)+端口号就能找到全世界独一无二的电脑上的独一无二的应用程序

数据0和1发送给应用程序,TCP/UDP协议

应用程序

0和1转换成具体的功能

 

 

抽象层

客户端和服务端的应用程序想通信,两者传输的就、数据必须是一样

socket抽象层就是写出一个全世界独一无二的计算机上的应用程序,既可以是客户端,也可以是服务端

使用socket编写的客户端服务端写一个文件拷贝的CS架构的软件

 

 

TCP三次握手和四次挥手

TCP把链接作为最基本的对象,每一条TCP链接都有两个端口,这个端口成为套接字,他的定义为端口号拼接到IP地址及构成了套接字。

  • 三次握手

  • 其实一次握手,两次握手也能实现通信,但是存在很多问题:

    1. 一次握手的话,接收不到服务端的确认信号,你无法得知服务端的状态(关闭,开启)

    2. 两次握手的话,如果你在第二次握手后死掉了(宏机),但是你死之前发送了数据指令,则服务器依然会发送数据指令,很容易被拦截盗窃,有安全隐患。

  • 四次挥手

  • 四次挥手也是出于一种安全考虑吧

    1. 四次挥手的话,可以避免如果在第二次挥手后,客户端出现宏机撕掉后,在第二次和第三次之间,服务器端向客户端发送数据,数据无人接收,被人冒名接收的风险

    2. 同样,第四次挥手是为了解决第三次挥手时候,如果没有第四次挥手的话,服务器端不停的向客户端发送数据,不会停止的问题

 

为什么客户端最后还要等待2MSL

  • 主要常见原因是为了网络延迟

MSL,TCP允许不同的实现可以设置不同的MSL值

  1. 保证客户端最后一个ACK能够到达服务器,因为这个ACK报文可能已经丢失,从服务器来看,FIN和ACK报文已经断开了,客户端没有回应,那应该是没有收到,我就重发一次,于是服务器再发一次,客户端就能在2MSL时间段内收到这个重传的请求,并给出回应报文,并重启2MSL计时器

  2. 为了防止类似与三次握手中的‘已经失效的连接请求报文’出现在本连接中,客户端发送完最后一个确认报文中,在这个2msl中,可以让本连续持续时间内所有的报文消失,,这样新连接中不会出现旧连接的请求报文

转载于:https://www.cnblogs.com/zrx19960128/p/11091483.html

猜你喜欢

转载自blog.csdn.net/weixin_34279184/article/details/94107618