栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

network专栏 01.网络编程 01.网络协议

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

network专栏 01.网络编程 01.网络协议

CS与BS架构

Client <<======>> Server

客户端与服务器

Browser <<======>> Server

浏览器与服务器

网络通信:

网络 --> 物理链接介质 + 互联网通信协议

跨地域数据传输 --> 通信

OSI七层协议

协议:规定数据的组织格式

格式:头部[打包] + 数据部分

每层打包/拆解一个头

OSI七层协议

应用层、表示层、会话层 浏览器应用采用http协议

socket套接字 封装传输层及以下的协议

传输层 一般采用tcp或udp协议

网络层 ip协议

数据链路层

物理层[二进制传输]

以太网协议

物理层:

负责发送光电信号

单纯的电信号毫无意义,必须对其进行分组

一组物理层数据称之为位

数据链路层:以太网协议:ethernet

规定:

1.一组数据称之为一个数据帧

2.数据帧分为头+数据两部分

头包含:源mac地址、目标mac地址

数据包含:网络层发来的整体的内容

3.网卡

接入互联网的主机必须有一块网卡

每块网卡在出厂时都会烧制好一个全世界独一无二的地址

FF:FF:FF:FF:FF:FF: 十二位16进制数

以太网协议的工作方式是广播[靠吼]

存在局限性,无法将全球的电脑放进一个屋子,会导致广播爆炸

ip协议与arp协议

网络层:

划分出多个广播域,同一广播域/局域网内,信息传播靠吼

网关:网络的出口

一个连接到公网的地址 一个局域网的地址

网关与外界通讯走的是路由协议

IP协议:

1.一组数据称之为一个数据包

2.数据帧分成两部分:头 + 数据

头包含:原地址与目标地址,该地址是IP地址

数据包含:传输层发来的整体的内容

3.IP地址

ipv4:

32位二进制数

4,294,967,296

子网掩码

32位二进制数

1-24位都为1

合法的ip地址:

172.12.10.1/24

根据ipv4与子网掩码,计算网关地址,判断是否在同一个局域网


 

ARP协议:

将ip地址解析成mac地址

计算两个ip地址是否在同一局域网内,如果在,则可基于mac传输

如果不在,则需要获取网关的mac地址,通过网关进行数据传输

发送端:

FF:FF:FF:FF:FF:FF 172.16.10.10/24 172.16.10.11/24

tcp协议

传输层:应用程序端口

端口范围:16位二进制数 0-65535,0-1023为系统占用端口

ip + port --> 标识全球范围内独一无二的一个基于网络通信的应用程序

ethernet头 + ip头 + tcp头 + 应用层的头 + 应用层数据

tcp协议特点:

传输层会将数据分段

头部固定为20个字节

tcp协议的工作方式:

双向通信链接:

三次握手机制建立链接:

1.客户端向服务端发送请求

2.服务端同意请求,并向客户端发送请求

3.客户端同意请求

四次挥手机制断开链接:

由于管道内有数据,因此第二步不可合并

SYN = 1, 建立链接请求

ACK = 1, 同意链接请求

FIN = 1, 终止链接请求

谁建立的请求,谁就可以向对方传输数据

可靠传输:

发送的数据必须等待对方确认接收后,才会将自己内存中的数据清理掉

传输效率会降低,但稳定性更高

nagle算法:将多次间隔较小、且数据量较小的数据,合并成一个较大的数据,一起传输

客户端状态:

SYN_SENT ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT

服务端状态:

LISTEN SYN_RCVD ESTABLISHED CLOSE_WAIT LAST_ACK

当客户端大量处于TIME_WAIT状态时,意味着服务端正在经历着高并发

半链接池:

高并发时,过多的请求先存入接待室,避免请求过多而导致服务端崩溃

udp协议

udp协议的工作方式

不需要建立链接、不会等待对方确认接收

传输速度快,但是不稳定

在发送时,就会将每份数据按边界打包,因此不会出现粘包问题

1个sendto,对应1个recvfrom

如果第1个recvfrom没有接收全第1个sendto,则会导致数据丢失,但不会粘包

其他协议

Socket抽象层 套接字

导入该类,获取其接口

将传输层及以下的数据封装

应用层:

HTTP通信:浏览器

自定义:客户端

自定义协议注意事项:

1.头部:放对数据的描述信息 例如:数据的接收者、类型、长度等...

2.头部的长度必须固定,否则在读取时会出错

dns:域名解析 将域名指向对应的ip地址

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782559.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号