网络协议

计算机网络是什么?

利用通信线路将地理上分散的、具有独立功 能的计算机系统和通信设备按不同的形式连 接起来,以功能完善的网络软件及协议实现 资源共享和信息传递的系统。

主要网络有哪些?
1、局域网 2、城域网 3、广域网 (覆盖范围) …分类
计算机网络发展概史
1、诞生阶段,单个计算机为中心的远程联机系统
2、ARPANET,多个主机通过通信线路互联起来
3、开放性的标准化体系结构,OSI(Open System Interconnection Reference Model )开放式系统互联通信参考模型诞生
4、Internet互联网

计算机网络体系结构

各层的关系
每一个抽象层建立在低一层提供的服务上, 并且为高一层提供服务。
程序员重点关注TCP/IP模型,OSI七 层模型了解即可

在这里插入图片描述
重点关注:
网络层(IP层)
传输层(TCP层)

TCP/IP协议族

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP 协议组成。协议采用了4层的层级结构。然而在很多情况下,它是利用 IP 进行通信时所必须用到的 协议群的统称。
在这里插入图片描述

网络传输中的数据

是全能性术语;
用于表示数据链路层中包的单位;
是 IP中数据的单位;
则表示 TCP 数据流中的信息;
消息是指应用协议中数据的单位。
在这里插入图片描述

TCP/IP协议族

在这里插入图片描述
TCP 面向连接的、可靠的流协议
UDP 面向无连接的通讯协议
IP 在源地址和目的地址之间传送的数据包
ICMP 控制报文协议
IGMP internet组管理协议
ARP 地址解析协议
RARP 反向地址转化协议
移动通信中的4G、5G在哪一层? 链路层
UDT基于光纤、海量数据(基于UDP,在应用层自己实现连接、重传)

网络通信中的地址和端口号

MAC 地址(物理地址、局域网地址、以太网地址)

链路层
ipconfig -all
网络设备的制造商在制造网络设备的时候写在硬件内部的叫MAC地址,与网络没有任何关系,写到了网卡的BIOS里面,MAC地址 48位,6个字节,前24位由IEEE决定分配,后24位由厂商决定

在这里插入图片描述

IP地址(逻辑上存在的)

网络层
不受硬件限制
IPV4 24位

IP层用来区分通讯子网
A子网的计算机像B子网中计算机发送消息,会判断167不是A子网
新进入子网的计算机要进行身份广播,告诉子网中别的计算机它的IP和MAC地址是多少
在这里插入图片描述
网络嗅探:数据包在同一个子网内部,不让网卡把收到的别人的数据丢掉,把收到的所有数据都抓到了,
越过传输层和网络层,直接抓取网络设备网卡上原原本本的网络数据,自行进行解析,原始套接字

端口号

传输层
用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址
标准端口号
0~1024:知名端口号
1024~49151:引用程序可以使用,尽量不要使用

服务端的程序要指定端口号

客户端程序就没必要指定端口号,操作系统会为我们分配一个端口号(49152~65535)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP概述

Transmission Control Protocol

TCP的基本特性

  1. 面向连接 (只能端到端,两个指定的机器,UDP除了端到端还可以广播)
  2. 可靠性
  3. RTT(往返时延,Round-Trip Time)和RTO(重传超时,Retransmission TimeOut)
  4. 数据排序
  5. 流量控制
  6. 全双工

虚拟的连接
固定电话是真实的连接

TCP连接中的三次握手

三次握手
建立一个TCP连接时,需要客户端和服务 面试点 端总共发送3个包以确认连接的建立。

第一次握手
客户端请求建立连接。

第二次握手
服务端应答客户端,并请求建立连接。

第三次握手
客户端针对服务端请求确认应答。

在这里插入图片描述
客户端收到反应后,检查ACK的标志是否为1
检查ack是不是seq+1
如果是就能确认服务器收到了发送的SYN的报文
再给服务器发一个应答(告诉服务器它发的SYN收到了)

发现SYN=1就是有客户端要建立链接

为什么需要3次握手?
TCP是面对连接的,所以需要双方都确认连接的建立。
3次握手是保证数据可靠传输的最小次数,通讯双方都要有请求和答复。

TCP的3次握手的漏洞-SYN洪泛攻击

SYN洪泛攻击
定义
通过网络服务所在的端口发送大量伪造原地址的攻击报文,发送到服务端,造成服务端上的半开连接队列被占满,从而阻 止其他用户进行访问。
原理
攻击者客户端利用伪造的IP地址向服务端发出请求(第一次握手),而服务端的响应(第二次握手)的报文将永远发送不到真 实的客户端,服务端在等待客户端的第三次握手(永远都不会有的),服务端在等待这种半开的连接过程中消耗了资源,如 果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。
解决方案
1.无效连接监控释放
2.延缓TCB分配方法
3.防火墙

TCP中的四次挥手(分手)

四次挥手
定义
断开一个TCP连接时,需要客户端和服务端总共发送4个包以 确认连接的断开。
过程
第一次挥手:客户端发送关闭请求
第二次挥手:服务端响应客户端关闭请求
第三次挥手:服务端发送关闭请求
第四次挥手:客户端发送关闭确认请求

在这里插入图片描述
客户端和服务端都可以发起关闭

第一次分手:
主机1(可以是客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

第二次分手:
主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
主机2进入CLOSE_WAIT状态

当服务端把应该发送给客户端的数据全部都发送完毕后,再发一个告诉客户端我的发送完毕了(默认1为客户端,2服务端)

第三次分手
主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE状态;

第四次分手
主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAITING状态;主机2收到主机1的ACK报文段以后,就关闭连接,主机2进入CLOSED 主机2在网络连接中全部生命就结束了(不接收不发送了);此时,主机1等待2*MSL(最长报文段寿命 1~4分钟) 后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了进入CLOSED状态。

在这里插入图片描述

为什么需要四次挥手?
TCP是双全工(即客户端和服务器端可以相互发送和接收请求),所以需要双方都确认关闭连接。

为什么需要TIME-WAIT状态?
1.确保发送的ACK报文会被服务端收到
2.端口冲突了怎么办,(数据可能还在网上传递),TIME-WAIT状态应用占据的端口不允许建立新的链接,还能收到消息,CLOSED状态端口才能重复使用

第二步和第三步可能会合并
只要服务端没有消息要发送了,就合并

HTTP协议

HTTP:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网 (WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
在这里插入图片描述

一次完整http请求的过程

1.首先进行DNS域名解析(本地浏览器缓存、操作系统缓存或者DNS服务器)
(DNS域名服务)域名解析
2.三次握手建立TCP 连接
3.客户端发起HTTP请求
4.服务器响应HTTP请求
5.客户端解析html代码,并请求html代码中的资源
6.客户端渲染展示内容
7.关闭 TCP 连接

keep_alive ,可暂不关闭
http2 IO多路复用,保持多个http存活性
http3 UDT

DNS劫持
劫持DNS服务器,通过某些手段获得域名的解析记录控制权,修改结果
HTTP劫持
发现是个http请求,发你的请求导到它想去的节点
发现是个http响应,把html文件里面插入自己的js,html文件<js,dom>

使用https 对报文进行加密

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值