网络分层架构(七/四层协议)

网络分层架构(七/四层协议)网络分层架构业内普遍的分层方式有两种。OSI七层模型和TCP/IP四层模型。OSI七层模型:物、数、网、传、会、表、应TCP/IP四层模型:链、网、传、应1)物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的…

大家好,又见面了,我是你们的朋友全栈君。

网络分层架构

在这里插入图片描述
业内普遍的分层方式有两种。OSI七层模型 和TCP/IP四层模型。
OSI七层模型:物、数、网、传、会、表、应
TCP/IP四层模型:链、网、传、应
1) 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
2)数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1
3)网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
4) 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
5) 会话层:通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
6)表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
7) 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

分层功能示意:
OSI七层模型结构体: 物、数、网、传、会、表、应
TCP/IP 四层模型:数、网、传、应
在这里插入图片描述

链路层:

以太网规定,连入网络的所有设备,都必须具有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。通过网卡能够使不同的计算机之间连接,从而完成数据通信等功能。网卡的地址——MAC 地址(全球唯一),就是数据包的物理发送地址和物理接收地址。

链路层速记:ARP(核心协议)
mac —— 目标mac
ARP 协议作用: 借助 IP 获取 mac 地址。

*: MAC 地址是绑定在网卡上的
IP:地址则是管理员分配的

网络层:

网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做“网络地址”,这是我们平时所说的IP地址。网络层协议包含的主要信息是源IP和目的IP。

网络层速记:IP(核心协议)
源IP —— 目标IP
IP协议的作用: 在 网络环境中唯一标识一台主机。
IP地址本质:2进制数。—— 点分十进制 IP地址 (string)
IP和MAC的作用:
网络地址(IP):帮助我们确定计算机所在的子网络
MAC 地址:则将数据包送到该子网络中的目标网卡。
处理顺序:从逻辑上可以推断,必定是先处理网络地址,然后再处理 MAC 地址

传输层:

端口:确定进程
1, 对于同一个端口,在不同系统中对应着不同的进程
2,对于同一个系统,一个端口只能被一个进程拥有

传输层速记:TCP / UDP(核心协议)
port —— 在 一台主机上唯一标识一个进程。

应用关系:

通过网络层IP确认交互端,通过MAC确认信息发送目标,最终通过端口指定要发生信息交互的程序

在这里插入图片描述

应用层

接到传输层传递过来的数据就要对数据进行解析,应用层就是规定程序的数据格式
应用层速记:ftp、http、自定义
对数据进行封装。 解封装

TCP/IP:TCP/IP协议是一个大家族,不仅仅只有TCP和IP协议,它还包括其它的协议

网络通信过程

数据通信:
封装: 应用层 —— 传输层 —— 网络层 —— 链路层 。 没有经过封装的数据,不能在网
络环境中传递。
解封装 : 链路层 —— 网络层 —— 传输层 —— 应用层

在这里插入图片描述
socket:
套接字。
网络通信过程中,socket 一定是成对出现的。
1,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。
2,IP地址+端口号:就对应一个socket。
3,欲建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识
一个连接。
4,Socket来描述网络连接的一对一关系。
5,常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。
a)流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;
b)据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
关于通信:

  1. mac地址(不需要用户指定) (ARP 协议)Ip ——> mac
  2. IP 地址 (需要用户指定) —— 确定主机
  3. port 端口号 (需要用户指定) —— 确定程序
  4. 不能使用系统占用的默认端口。 5000+ 端口我们使用 (8080)
  5. 65535为端口上限。

C/S架构设计的优缺点:
优点:1,性能:客户端位于目标主机上可以保证性能,将数据缓存至客户端本地,从而提高数据传
输效率。
2,协议灵活:户端和服务器程序由一个开发团队创作
缺点:1,成本高 客户端服务端都需要独立开发
2,独立安装客户端对用户来说有安全隐患

TCP:CS开发架构(代码层面)

在这里插入图片描述
在这里插入图片描述

TCP通信过程:

三次握手:
	1. 主动发起请求端, 发送 SYN 
	2. 被动建立连接请求端 , 应答ACK 同时 发送 SYN
	3. 主动发起请求端,发送应答 ACK
	* 标志 TCP 三次握手建立完成。 —— server:Accept() 返回 。— client:Dial() 返回。

四次挥手:
	1. 主动关闭连接请求端, 发送 FIN
	2. 被动关闭连接请求端 ,应答 ACK
					标志。半关闭完成。 —— close()
	3. 被动关闭连接请求端 ,发送 FIN
	4.  主动关闭连接请求端,应答 ACK
					标志。四次挥手建立完成。 —— close().

在这里插入图片描述
TCP深入机制
在这里插入图片描述

//三次握手和四次挥手
在这里插入图片描述

TCP转换图解析:

1,主动发起连接请求端口close>完成三次握手>EATABLISEHED(数据通信状态)> Dial()函数返回

2,被动发起连接请求端: CLOSED > 调用Accept()函数>LISTEN 完成三次握手 >ESTABLISEHED (数据通信状态)>Accept()函数返回>数据传递期间 —— ESTABLISEHED (数据通信状态)

主动关闭连接请求端:ESTABLISEHED>FIN_WAIT_2 (半关闭)>TIME_WAIT >2MSL >确认最后一
个ACK被对端成功接收>CLOSE>半关闭、TIME_WAIT、2MSL
>只会出现在 “主动关闭连接请求端”

被动关闭连接请求端:ESTABLISEHED>CLOSE

查看状态命令:
windows:netstat -an | findstr 8001(端口号)
Linux: netstat -apn | grep 8001

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151724.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js 保留两位小数的方法总结「建议收藏」

    js 保留两位小数的方法总结「建议收藏」1、四舍五入的情况varnum=2.446242342;num=num.toFixed(2);//输出结果为2.452、不四舍五入第一种,先把小数边整数:Math.floor(15.7784514000*100)/100//输出结果为15.77第二种,当作字符串,使用正则匹配:Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))//输出结果为15.77,不能用于整数如10必须写

    2022年8月10日
    6
  • 新版Kubernetes问题处理流程

    新版Kubernetes问题处理流程

    2021年5月13日
    122
  • git常用命令大全「建议收藏」

    git常用命令大全「建议收藏」1.强制推送(慎用,除非你认为其他冲突等可以丢弃或者不是很重要)gitpush–force2.创建文件等小命令toucha//创建一个a文件echo1234>>a//把1234这个内容放入a文件cata//打开a文件读取出a文件中的内容mkdirtest//创建test文件夹rm文件名//删除文件pwd//打印…

    2022年5月30日
    43
  • mysql左连接去重

    mysql左连接去重表如下createtableTB_BATCH(  ID                  int(11)notnullauto_increment,  BATCH_NO             VARCHAR(32)comment’批次号’,  CONTRACT_ID         int(11)comment’合同ID’,  CONTRACT

    2022年6月5日
    25
  • 机器学习网格搜索寻找最优参数[通俗易懂]

    机器学习网格搜索寻找最优参数[通俗易懂]整理一下前阶段复习的关于网格搜索的知识:程序及数据请到github上下载GridSearch练习网格搜索是将训练集训练的一堆模型中,选取超参数的所有值(或者代表性的几个值),将这些选取的参数及值全部列出一个表格,并分别将其进行模拟,选出最优模型。上面是数据集的可视化分布图,具体代码如下:%matplotlibinlineimportpandasaspdimpo…

    2022年10月9日
    2
  • 电视处理器a53和a55哪个厉害(cortexa55处理器好吗)

    小编语:手机处理器从32位向64位的迁移过程中,功耗增加以及给手机厂商带来的散热成为一个很大的问题。目前Cortex-A57已经是64位手机处理器芯片的主流内核,它的功耗不降下来,更多手机功能的开发可能受限于系统总功耗而无法实现,ARM这次推出的Cortex-A35显然在这方面下了不少功夫,究竟能给手机厂商带来多少实惠,还要等终端产品推出后才见分晓……64位元处理器应用版图…

    2022年4月13日
    750

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号