网络相关知识总结

osi七层模型

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

osi五层模型

应用层(消息 ) 传输层(数据段)网络层(数据包)数据链路层(帧)物理层(比特)

tcp/ip四层网络模型

应用层 传输层 网络层 网络接口层

应用层

应用层是工作在操作系统里的用户态,其他层是在操作系统里的内核态

应用层协议(协议端口号是传输层的,是传输层给不同应用的标记)

tcp:http 80 https443 ftp20(数据传输)21(传输控制)ssh 22 telnet 23 dns 53  smtp 25 pop3 110

udp:dns 53 tftp69 server445

传输层

两个协议 TCP UDP

TCP叫做传输控制协议,特点是可靠传输  特性有流量控制,拥塞控制,超时重传

UDP只负责传输,特点是时效性和效率高

因为应用需要传输的数据非常打,所以当数据超过tcp最大报文段长度mss时,就会把数据包分为一个个数据TCP段,当某个分块丢失时,只需要重新发送这个数据段即可

网络层

传输层只需要作为应用间的传输媒介,实际传输功能是网络层实现

网络层协议 ip icmp arp

TCP段=TCP首部+数据部分

ICMP Internet控制消息协议

协议号是1

是依靠各种命令实现的,比如ping

ARP协议

在局域网内交换机是通过MAC地址通信的,ARP协议就是把一个一个已知的ip转化成MAC地址

当表内没有需要的MAC地址时,ARP会发送广播来寻找MAC地址

工作过程
1.PC1想要发送数据给PC2,查看缓存表里没有PC2的MAC地址
2.PC1发送(需要192.168.1.2的MAC地址)的广播。
3.所有主机收到ARP请求的广播,PC2回复ARP应答 ,其他主机丢弃
4.PC1将PC2的MAC地址保存到缓存表中,这时就可以和PC2发送数据了。

网络接口层

把数据包加上MAC头部封装成帧发送到网络上

分装格式

输入网址回车到显示页面网络发生了什么

1.先解析URL

http://www.ABC.com/a/index.html

http是协议

www.ABC.com是服务器名

/a/index.html是访问文件的路径

解析完毕后浏览器就会根据信息生成请求消息

2.查询真实地址-DNS

需要去查询目标服务器的IP地址

www.ABC.com.

.是根域

.com是顶级域

ABC.com是权威域

查询步骤是

客户端先在本机的host文件里查询有没有

www.ABC.com的ip

如果没有就去询问本地DNS服务器有没有www.ABC.com的ip(递归)

本地DNS服务器如果没有,那么它就会代替客户机向其他DNS服务器发起查询(迭代)

会先向根域名服务器查询  根域名服务器发现是.com,会给他.com服务器的地址

然后会向.com服务器进行查询,.com服务器发现是www.ABC.com权威服务器的地址,会给他权威服务器ip

然后向权威服务器查询,得到目标ip,然后发送给客户端。

3.协议栈分配任务

通过DNS找到ip后,就可以把http的请求分发给协议栈

应用程序通过调用socket库,委托了协议栈

  • Socket库(套接字库)是计算机网络通信中的一个关键组件,它提供了一组函数或方法,用于在网络中的设备之间建立连接、发送和接收数据

协议栈上半部分是TCP和UDP协议,用于收发数据

下面是IP协议,包括ICMP和ARP

4.TCP进行可靠传输

源端口号和目的端口号是决定发给哪个应用

序号是对数据包排序避免乱序

确认号是为了确认对方是否收到,没有就重复发送避免丢包

确认号:用于确认已经成功接收的数据,同时也用于通知发送方下一个期望接收的数据的序列号。

状态为 FIN结束连接 SYN发起连接 RST重新连接 ACK回复

窗口 通过什么一个窗口来表明自己的缓存大小,避免数据传输太快或者太慢,TCP会进行流量控制和拥堵控制

TCP三次握手

1、ACK:确认序号位,当该位为1时,用于确认发送方的数据接收成功;

2、SYN:同步序列号,TCP建立连接时将该值设置为1;

3、FIN:发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1

最一开始服务器客户端都在close状态,然后服务器去主动监听某个端口进去listen状态

  1. 第一次握手:客户端发送一个SYN=1给服务器,请求建立连接,同时发送一个seq=x的序号,让服务器把seq的序号作为起始字段来回应它。
  2. 第二次握手:服务器收到客户端的SYN包后,会发送一个SYN-ACK包(同步序列号-确认包)给客户端作为响应。在这个包中,SYN=1代表建立连接,ACK=1代表接受数据成功,ack=x+1是对接受序号的回复,seq=y是希望客户端用y这个序号作为起始字段回复。
  3. 第三次握手:客户端收到服务器的SYN-ACK包后,会发送一个ACK包给服务器作为确认。在这个包中,ACK=1代表数据接受成功,ack=y+1代表接收数据成功,seq=x+1是希望服务器以x+1作为初始字段回复。至此,TCP连接建立完成。

三次握手目的是保证双方都有发送和接收的能力

ip

tcp在连接,断开等操作时,需要ip模块把数据分发给网络包发送给目的对象

ip报文里有源ip地址和目的ip地址

通过路由表来确认从哪发送到哪里

MAC

在生成ip头部后,网络包还会在前面添加MAC包头

MAC包头包括接受方MAC和发起方MAC

发起方只需要把网卡MAC写入就行,接送方需要查表,

如果表中没有,就通过ARP协议寻找

网卡

网卡在获得网络包后,会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列

转化成电信号通过网线发出。

交换机

路由器

HTTP

超文本传输协议

http就是在两个设备之间,传输文字,视频,图片的约定

常见状态码

1xx表示处于中间态

2xx标识成功

3xx标识重定向,资源位置改变,需要重新请求

4xx标识客户端问题,报文有误,服务器无法处理

5xx表示服务器问题

200 最常见的成功

204 成功,但响应头没有body数据

206表示响应返回的body数据是一部分

301 永久重定向,资源已经不再了,需要用新的URL访问

302临时重定向

会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列

304 缓存重定向

400表示请求报文错误

403表示1资源被禁止访问

404表示资源不存在

500服务器错误

501表示客户端请求功能不支持

502通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。

503 表示服务器当前繁忙

GET POST

GET是从服务器获得指定的资源,请求参数一般是卸载URL里

POST是根据报文body对指定的资源作出处理

在RFC规范定义下

RFC(Request for Comments)规范是由互联网工程任务组(IETF)发布的一系列文档,用于描述和规范网络协议、服务和架构。

GET方法是安全且幂等的,可以对GET请求做缓存

POST方法由于新增或提交数据,是不安全的,多次提交数据会多次创建资源,是不等幂的

HTTP特性

HTTP/1.1的优点

1.简单 报文格式就是header +body 头部信息是key-value

2.灵活易扩展  请求方法,URL,状态码,头字段都允许开发人员自定义和扩充

同时HTTP由于是工作在应用层,它的下层可以随便变化

HTTPS就是在HTTP层和TCP层之间增加了SSL/STL安全传输层

HTTP/1.1 和 HTTP/2.0 传输协议使用的是 TCP 协议,而到了 HTTP/3.0 传输协议改用了 UDP 协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值