网络基础之网络协议

网络基础

一、操作系统

  • 操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

二、网络通信

2.1 互联网的本质就是一系列的网络协议

1、C/S 架构和B/S架构
  • 软件的框架分为B/S,C/S

C/S 客户端/服务器:一般情况下,我们使用的软件都是C/S架构的,如:qq,office等,C表示客户端,通过客户端使用软件,S表示服务器,通过服务器处理逻辑
特点:

  • 必须要安装;
  • 软件更新时,服务器和客户端同时更新;
  • C/S软件不能跨平台使用;
  • 客户端和服务器端采用的是自由协议交互比较安全。

B/S 浏览器/服务器:使用浏览器作为软件客户端进行对服务器的访问,比如京东,淘宝

特点:

  • 不需要安装;
  • 不需要更新;
  • 可以跨平台使用;
  • 采用HTTP协议,相对而言,没有那么安全。

如果没有网络,每台机器就只能彼此独立

服务端(server)端必须满足的条件:

  • (1)稳定运行(网络、硬件、操作系统、服务端应用软件),对外一直提供服务;
  • (2)服务端必须绑定一个固定的地址(客户端地址不用固定,客户端先发送数据或请求,然后服务端就能知道它的地址)。
2、互联网两大要素

(1)底层的物理连接介质,是为通信铺好道路的

(2)一套统一的通信标准---->互联网通信协议(计算机界的英语)

2.2 osi网络协议

七层五层四层网络协议

在这里插入图片描述

  • osi 七层协议:
    在这里插入图片描述
网络应用层协议

应用层协议

  • 1、DNS:域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。现在顶级域名TLD分为三大类:国家顶级域名nTLD;通用顶级域名gTLD;基础结构域名。域名服务器分为四种类型:根域名服务器;顶级域名服务器;本地域名服务器;权限域名服务器。

  • 2、FTP:文件传输协议FTP是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。FTP其于TCP。

  • 3、telnet远程终端协议:telnet是一个简单的远程终端协议,它也是因特网的正式标准。又称为终端仿真协议。

  • 4、HTTP:超文本传输协议,是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础。http使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。

  • 5、电子邮件协议SMTP:即简单邮件传送协议。SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP通信的三个阶段:建立连接、邮件传送、连接释放。

  • 6、POP3:邮件读取协议,POP3(Post Office Protocol 3)协议通常被用来接收电子邮件。

网络传输层协议

典型设备: 进程和端口
数据单元:数据段 (Segment)

  • TCP (Transmission Control Protocol )传输控制协议,提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。可靠的全双工信道。可靠、有序、无丢失、不重复。

  • UDP (User Datagram Protocol )用户数据报协议,发送数据前无需建立连接,不使用拥塞控制,不保证可靠交付,最大努力交付。

网络层协议

典型设备:路由器,防火墙、多层交换机)
数据单元:数据包(Packet )

  • IP (IPv4 · IPv6) (Internet Protocol) 网络之间互连的协议

  • ARP (Address Resolution Protocol) 即地址解析协议,实现通过IP 地址得 知其物理地址。

  • RARP (Reverse Address Resolution Protocol)反向地址转换协议允许局域 网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP地址。

  • ICMP (Internet Control Message Protocol )Internet 控制报文协议。它是TCP/IP 协议族的一个子协议,用于在IP 主机、路由器之间传递控制消息。

  • IGMP (Internet Group Management Protocol) Internet 组管理协议,是因特 网协议家族中的一个组播协议,用于 IP 主机向任一个直接相邻的路由器报 告他们的组成员情况。

数据链路层

典型设备: 网卡,网桥,交换机
数据单元:帧 (Frame)

  • PPP(Point-to-Ponit Protocol)点对点协议面向字节,由三部分组成:一个将IP 数据报封装到串行链路的方法;一个用于建立、配置和测试数据链路连接的链路控制协议

  • 停止等待协议:
    CSMA/CD(Carrrier Sense Multiple Access with Collision Detection)载波监听多点接入/碰撞检测协议。总线型网络,协议的实质是载波监听和碰撞检测。载波监听即发数据前先检测总线上是否有其他计算机在发送数据,如暂时不发数据,避免碰撞。碰撞检测为计算机边发送数据边检测信道上的信号电压大小。

  • ARQ(Automatic Repeat-reQuest )自动重传请求协议,错误纠正协议之一,包括停止等待ARQ 协议和连续ARQ 协议,错误侦测、正面确认、逾时重传与负面确认继以重传等机制。

物理层

典型设备:中继器,集线器、网线、HUB
数据单元:比特 (Bit)

  • 以太网物理层、调制解调器、PLC 、SONET/SDH 、G.709 、光导纤维、 同轴电缆、双绞线

网络协议总结

HTTP请求/响应报文:
  • HTTP请求报文组成:请求行+请求头+空行+请求体;
  • HTTP响应报文组成:响应行+响应头+空行+响应体;
  • 请求行:请求方法(HEAD/GET/POST) + 请求URL + HTTP协议版本;
  • 响应行:HTTP协议版本 + 状态码 + 状态码描述;
  • 请求头:比如客户端的Cookie和User-Agent就放在这里;
  • 响应头:比如服务器的Set-Cookie和Server信息就放在这里;
  • 请求体:比如客户端POST的数据就放在这里(对比:GET的数据放在请求行的URL里);
  • 响应体:比如服务器返回的HTML和JSON数据就放在这里。

常见的请求头有哪些

  • User-Agent:模拟浏览器访问;
  • Cookie:模拟用户登录信息;
  • Host:访问网址的IP是什么;
  • Accept:可接受的网页格式是什么;
  • Accept-Language:可接受的语言是什么;
  • Accept-Encoding:可接受的编码格式。
常见的状态码有哪些
  • 200/OK: 请求成功;
  • 201/Created: 请求已被实现,且一个新资源已根据请求被建立,URI跟随Location头信息返回;
  • 202/Accepted: 服务器已接受请求,但尚未处理;
  • 400/Bad Request: 请求无法被服务器理解;
  • 401/Unauthorized: 当前请求需要用户验证;
  • 403/Forbidden: 服务器已理解请求,但拒绝执行;
  • 404/Not Found。

响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误

  • 1xx 接收部分数据;
  • 2xx 成功;
  • 3xx 重定向错误;
  • 4xx 客户端错误;
  • 5xx 服务器错误。
TCP 和 UDP 的区别
  • TCP 是面向连接的,UDP 是面向无连接的;
  • UDP程序结构较简单;
  • TCP 是面向字节流的,UDP 是基于数据报的;
  • TCP 保证数据正确性,UDP 可能丢包;
  • TCP 保证数据顺序,UDP 不保证。
什么是面向连接,什么是面向无连接
  • 在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会。
TCP 为什么是可靠连接
  • 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。;
  • TCP 报文头里面的序号能使 TCP 的数据按序到达;
  • 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制;
  • TCP 拥有流量控制及拥塞控制的机制;
  • TCP 的顺序问题,丢包问题,流量控制都是通过滑动窗口来解决的;
  • 拥塞控制时通过拥塞窗口来解决的。
TCP三次握手和四次挥手

SYN: synchronization(同步)、ACK: acknowledgement(确认:告知已收到)、FIN: finish(结束)。
client(客户端)、server(服务端)

TCP三次握手:

  1. 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

三次握手目的:

  1. 第一次握手:Client什么都不能确认;Server确认了对方发送正常;

  2. 第二次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己接收正常,对方发送正常;

  3. 第三次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己发送、接收正常,对方发送接收正常。

  • 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

A:您好,我是 A
B:您好 A,我是 B
A:您好 B

TCP四次挥手:

  • (1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

  • (2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

  • (3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

  • (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

A:B ,我不想玩了
B:哦,你不想玩了啊,我知道了
这个时候,只是 A 不想玩了,即不再发送数据,但是 B 可能还有未发送完的数据,所以需要等待 B 也主动关闭。
B:A ,好吧,我也不玩了,拜拜
A:好的,拜拜

HTTP协议与TCP/IP协议的关系
  • HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。
如何理解HTTP协议是无状态的
  • HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
HTTPS
  • 安全超文本传输协议(Secure Hypertext Transfer Protocol),HTTPS实际上应用了Netscape的完全套接字层(SSL) 作为HTTP应用层的子层(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信),SSL使用40位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

Http和Https区别

不同点:

  1. https协议需要到ca申请证书,一般免费证书很少,需要交费;
  2. HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头;
  3. 在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层;
  4. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议;
  5. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
  6. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证、完整性保护,即HTTP+ 加密 + 认证 +完整性保护 = HTTPS,比http协议安全;
  7. HTTP的缺点:通信使用明文,内容可能被窃听;不验证通信方身份,有可能遭遇伪装(跨站点请求伪造);无法证明报文的完整性,有可能已被篡改(运营商劫持)。

相同点:

  • 大多数情况下,HTTP 和 HTTPS 是相同的,因为都是采用同一个基础的协议,作为 HTTP 或 HTTPS 客户端——浏览器,设立一个连接到 Web 服务器指定的端口。当服务器接收到请求,它会返回一个状态码以及消息,这个回应可能是请求信息、或者指示某个错误发送的错误信息。系统使用统一资源定位器 URI 模式,因此资源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一个协议头(https)的说明,其他都是一样的。
POST和GET区别
  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  4. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
一次完整的HTTP请求过程
  • ​域名解析(DNS,万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析));

  • 发起TCP的3次握手;

  • 建立TCP连接后发起http请求;

  • 服务器响应http请求,浏览器得到html代码;

  • 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等);

  • 浏览器对页面进行渲染呈现给用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值