计算机网络模型与协议概览

本文详细介绍了OSI 7层网络模型和TCP/IP四层模型,包括各层的功能、协议以及常见协议如ARP、ICMP、TCP、UDP的工作原理。此外,还探讨了网络接口层、网络层、传输层和应用层的重要协议,并解释了为何需要网络以及网段划分的原因。最后,文章提到了HTTP协议及其请求和响应报文的结构,以及HTTPS的通信过程和优点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 OSI 7层网络模型

 

 

 

七层OSI开放系统互连参考模型

1.1、物理层

物理层并不是物理媒体本身,它是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程,主要功能是为数据端设备提供传送数据通路和传输数据。物理层的所有协议规定了不同种类的传输设备、传输媒介如何将数字信号从一端传送到另一端,而不管传送的是什么数据。物理层是完全面向硬件的,是整个开放系统的基础,通过一系列协议定义了通信设备的机械、电气、功能和过程的条件。

物理层上使用的协议有:802.3系列协议、802.11系列协议等,常见的物理层设备有:网卡、光纤、串口、并口等。

 

1.2、数据链路层

数据链路层是在物理层已能将信号发送到通信链路中的基础上,负责建立一条可靠的数据传送通道,在相邻结点之间有效地传送数据。在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错,数据链路的建立、拆除、对数据的检错、纠错是数据链路层的基本任务。

数据链路层通过一系列协议实现的功能包括:数据封装成帧、流量控制、差错控制、传输管理。就发送端而言,数据链路层将来自网络层的数据按一定规则转化为比特流送到物理层进行处理;就接收端而言,数据链路层将来自物理层的比特流合并成完整的数据帧供网络层使用。数据链路层上使用的协议有:PPP、PPPoE、CSMA/CD等。

 

1.3、网络层

网络层是开放系统互连参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。网络层上使用的协议有:IP、ARP、ICMP、IMGP等。

 

1.4、传输层

传输层实现发送端和接收端的端到端的数据分组传送,负责保证实现数据包无差错、按顺序、无丢失和无冗余地传输。在传输层上,所执行的任务包括检错和纠错,传输层的出现是为了更加有效地利用网络层所提供的服务,进一步地提高数据传输的可靠性。传输层具备的差错恢复、流量控制等功能,可以对会话层屏蔽通信子网的细节与差异。传输层面对的数据对象已不是网络地址和主机地址,而是会话层的界面端口。传输层上使用的协议有:TCP、UDP等。

 

1.5、会话层

会话层的主要功能是按照在应用进程之间约定的原则,按照正确的顺序收、发数据,进行各种形态的对话。会话层规定了会话服务用户间会话连接的建立和拆除规程以及数据传送规程。会话层还提供数据同步和检查点功能,这样当网络失效时,会对失效后的数据进行重发。会话层上使用的协议有:NetBIOS、LDAP等。

 

1.6、表示层

表示层的主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示。表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互操作。表示层负责的主要工作有:通信协议的转换、数据的翻译、数据的加密、数据的压缩、字符的转换等。表示层上使用的协议有:ASCII、ASN.1、MPEG等。

 

1.7、应用层

应用层是OSI/RM模型的最高层,主要功能是实现应用进程(如用户程序、终端操作员等)之间的信息交换,同时还具有一系列业务处理所需要的服务功能。应用层是直接提供服务给使用者的应用软件的层,如电子邮箱、实时通信程序等都属于应用层的范畴。应用层可实现网络中一台计算机上的应用程序与另一台计算机上的应用程序之间的通信,就像在同一台计算机上操作一样。应用层上使用的协议有:HTTP、FTP、SMTP、POP3等。

 

 

二 TCP/IP四层网络模型

第一层 网络接口层

网络接口层包括用于协作IP数据在已有网络介质上传输的协议。

协议:ARP,RARP

 

第二层 网间层

网间层对应于OSI七层参考模型的网络层。负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。

协议:本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),ICMP协议。

 

第三层 传输层

传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。

其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。

 

第四层 应用层

应用层对应于OSI七层参考模型的应用层和表达层。

因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。

 

网络协议中的数据包发送

 

三 各种协议

3.1 ARP(网络接口层  网络层):将32位的IP地址转换为48位的物理地址。

IP地址是网络层的地址,连上互联网的每一台主机的每一个接口都会有一个IP地址,每台主机的每个网卡均有唯一的物理地址,物理地址在生产时就已经定死,无法改变,而每个网卡的IP地址是可以改变的(例如连上不同的wifi,IP地址也会不同)。

为什么有了IP地址还要有MAC地址,有MAC地址还要有IP地址?

首先要明白,物理网络是有许多结构的,不同的物理网络具有不同的mac地址格式,为了让不同的网络进行通信,那么就使用统一的IP地址好了,

mac地址是数据链路层的地址,并且mac地址出现时间比IP地址要早,保留mac地址很可能是为了向后兼容已有的网卡芯片,同时,并不是所有的网络都使用IP协议

 

ARP报文格式

 

硬件类型(16位):指定物理地址的类型,1表示以太网。

上层协议类型(16位):指定要将MAC地址映射成什么协议的地址。0x0800表示IP地址。

MAC地址长度(8位):指定MAC地址的长度,单位是字节。

协议地址长度(8位):指定协议地址的长度,单位为字节。

操作类型:1表示ARP请求、2表示ARP回应、3表示RARP请求,4表示RARP回应。

接下来为发送源的物理地址和协议地址(由于回应时要知道发送个谁,以此来封装以太帧),目的物理地址和协议地址。

封装ARP请求时,发送源除了目的物理地址外都会填写。

 

PS1:

当路由器或主机选择了某条路由时,首先会查找ARP缓存,若缓存中有对应IP地址的物理地址,则以此封装以太帧,否则会广播(为二层广播)ARP报文,每个主机接收到ARP请求报文后,会缓存发送源的IP——MAC对到ARP缓存中,目的主机会发送ARP回应(此时为单播),当发送源接收到回应时,会将目的方的IP——MAC对存放在ARP缓存中。在点到点的物理连接中,是不会用到ARP报文的,在启动时双方都会通告对方自己的IP地址,此时物理层的封装不需要MAC地址。windows上可以使用arp -a查看本机的ARP缓存。ARP缓存中的每个条目的最大存活时间为20分钟(从条目创建时开始计时)。

 

Ps2:

ARP代理:之前说ARP请求是广播的,我们知道路由器是分割广播域的,如果我们要查询的IP地址在外网怎么办?此时就需要ARP代理,当发送源广播ARP请求时,本地网络上不会有主机回应(因为IP地址是外网的),此时路由器会将回应该请求,则发送源误认为路由器就是目的主机,会将报文全部转发给它,在由路由器转发报文,则该路由器就被称为ARP代理。

 

Ps3:

免费ARP::在主机开机配置时,会发送一个目的IP地址为自己IP地址的ARP请求报文,该报文称为免费ARP,其作用如下:

1、让主机确认本地网络上是否有与自己IP地址相同的主机,若有,则ICMP错误报文被返回。

2、若接收主机ARP缓存中本身就有发送源主机的IP——MAC对,则会更新,否则,会缓存发送源的IP——MAC对。

 

3.2 ICMP(网络层)(Internet Control Message Protocol)因特网控制报文协议。

它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。

 

ICMP消息类型

ICMP报告无法传送的数据报的错误,并帮助对这些错误进行疑难解答。例如,如果IPv4不能将数据报传送到目标主机,则路由器上的或目标主机上的ICMP会向主机发送一条“无法到达目标”消息。下表为最常见的ICMP消息。

 

 

ICMP报头格式

ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示

 

类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。

代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。

校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。

标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。

此部分引用地址 (https://blog.youkuaiyun.com/qq_21508727/article/details/81074763)

 

 

3.3 UDP(传输层)

16位源端口号                  16位目的端口号

16位UDP长度                   16位UDP检验和(保证基本的数据正确性数据可以丢失,但不能把错的                       数据传给应用层)

数据

 

无连接:知道对方的的IP和端口号就直接进行发送数据,不管对方有没有连接

面向数据报:不管应用层给自己交付的报文长度是多少都不会进行组装和拆分,假如发送方一次发送了100个字节,那么接收方也必须对接受的数据一次性接受100字节

 

不可靠传输:UDP没有实现确认机制和重传机制,因此如果数据发生丢失则不会告诉给上层的应用层

 

UDP的缓冲区

UDP是调用sendto将数据直接交给内核,内核将数据交给网络层协议进行后续传输动作,UDP有接受缓冲区,当数据在接收方的缓冲区已经满的时候,此时如果再给对方进行数据发送,数据就会丢失

 

UDP是基于全双工的,通信双方既可以读,也可以写

UDP传输数据 的时候最大长度是16位,也就是在传输的过程中最大长度就是64K,如果传输裹过程中数据大于64K,此时就需要应用层将数据进行分包,在到达对方的时候进行解包

 

 

3.4 TCP协议(传输层)

 

16位源端口号                              16位目的端口号

32位序列号

32位确认序列号

4位首部长度      保留6位        标识位     16位窗口大小

16位检验和                                16位紧急指针

选项

数据

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。

确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。

确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效

同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。

终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接

PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。

 

 

3.5 IP(网络层)

为什么要有网络?

之所以要有网络层,是因为数据在发送方传输层的时候只有自己的源端口和目标端口,但是不知道对方的IP以及数据应该如何到达对方的目的端口都是不知道的,有了网络层,此时加上路由器就会将数据从远端通过路由转发算法对其进行转发,一直到达对方所在的局域网

数据从上层的传输层传下来的时候,此时山层协议有很多,为了区分数据来自上层的哪个协议此时就在IP层的报头中添加了一个8位协议,表示自己接受的数据来自上层协议的那个协议,同时在IP层也有对应的IPV4和IPV6,为了区别两者,也就增加了一个4位版本,同时由于数据进行了封装,那么如和区别自己是正文还是报头信息,此时就需要将自己的数据进行区分,于是便有了首部长度这个字段(4位),同时也有一个8位服务类型,同时16位的总长度表示数据段加上首部整体的长度,由于数据来自上层,有可能数据太大了,于是就需要将数据进行分片,来自上层的同一个数据在经过分片后它的标识是一样的,但是为了防止在IP层对数据进行胡乱的分片,此时就有了3位的表示字段表示是否允许分片.同时既然进行了分片,此时接受方接受到数据后就要进行组装,在进行组装的时候肯定要知道那个数据在前,那个数据在后,于是就需要一个片偏移表示数据的位置,同时在IP层数据要进行路由转发,于是每一个数据都得有自己的一个生存时间,同时也得对首部信息进行校验.既然进行路由转发,此时就需要知道源IP,目的IP,同时也有选项字段(最多40)字节

4位版本            4位首部长度      8位服务类型          16位总长度

16位标识符                  3位标识             13位的片偏移

8位生存时间                  8位协议            16位首部校验和

                                32位源IP地址

                              32位的目的IP地址

                                    选项

                                    数据

网段划分

为什么要有网段划分:

之所以要有网段划分是因为网络中有很多的主机,而在这么多的主机中要去找一个主机,那可能会耗费大量的人力物力,所以为了方便找到网络中的每一个主机

IP包括网络号和主机号,其中网络号是为了保证两个网段具有不同的标识,端口号是为了保证在同一个网络之间的主机有不同的标识

其中同一个子网中的主机之间网络号相同,主机号不同

 

判断两个ip的网段是否相同就看网络标识是否相同

IP与子网掩码AND就是网络标识

IP与子网掩码的取反AND就是主机标识

 

网络标识(网络号+子网号)+主机号

在网络号划分ABCDE等几类网络后,还会划分为几个子网

在寻找主机时先根据IP找到网络号。在找到在该网络下哪一个子网最后找到主机

 

A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)

     第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。每个网络能容纳1亿多个主机

     一般用于大型网络。

B类:(128.1.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)

     前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。可用的B类网络有16382个,每个网络能容纳6万多个主机 。

     一般用于中等规模网络。

 

C类:(192.0.1.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)

     前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。C类网络可达209万余个,每个网络能容纳254个主机。

     一般用于小型网络。

 

D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户

E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。

  回送地址:127.0.0.1。 也是本机地址,等效于localhost或本机IP。一般用于测试使用。例如:ping 127.0.0.1来测试本机TCP/IP是否正常。

 

PS:

全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:

A类地址:10.0.0.0~10.255.255.255

B类地址:172.16.0.0~172.31.255.255

C类地址:192.168.0.0~192.168.255.255

A类地址的第一组数字为1~126。其中0代表任何地址,127为回环测试地址,注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。

 

3.6 HTTP(应用层)

HTTP请求报文

 

请求行:

①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。

②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。

③是协议名称及版本号。

 

请求头:

④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。

与缓存相关的规则信息,均包含在header中

Accept

请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。Accept属性的值可以为一个或多个MIME类型的值(描述消息内容类型的因特网标准, 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据)

cookie

客户端的Cookie就是通过这个报文头属性传给服务端

服务端是怎么知道客户端的多个请求是隶属于一个Session呢?通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后面)

Referer

表示这个请求是从哪个URL过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是http://www.google.com。

Cache-Control

对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的

 

请求体:

⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。

 

HTTP回复报文

 

响应行:

①报文协议及版本;

②状态码及状态描述;

响应头:

③响应报文头,也是由多个属性组成;

常见的HTTP响应报文头属性

Cache-Control

响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。

常见的取值有private、public、no-cache、max-age,no-store,默认为private。

private:             客户端可以缓存

public:              客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的)

max-age=xxx:   缓存的内容将在 xxx 秒后失效

no-cache:          需要使用对比缓存来验证缓存数据

no-store:           所有内容都不会缓存

默认为private,缓存时间为31536000秒(365天)也就是说,在365天内再次请求这条数据,都会直接获取缓存数据库中的数据,直接使用。

 

ETag

一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。

 

Location

我们在JSP中让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect到的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中:

 

cookie机制:

客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。

如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。

如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。

如果maxAge为0,则表示删除该Cookie。

 

Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。

如果要删除某个Cookie,只需要新建一个同名的Cookie,并将maxAge设置为0,并添加到response中覆盖原来的Cookie。

Cookie cookie = new Cookie("username","helloweenvsfei");   // 新建Cookie

cookie.setMaxAge(0);                          // 设置生命周期为0,不能为负数

response.addCookie(cookie);                    // 必须执行这一句 输出到客户端

 

响应体:

④响应报文体,即我们真正要的“干货”

 

3.7 HTTPS

(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。

HTTPS通信过程

 

一、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

二、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

三、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

四、发送给服务端,此时只有服务端(RSA私钥)能解密。

五、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

 

更具体的 HTTPS通信过程

 

1. 客户端发起HTTPS请求

这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

2. 服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3. 传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4. 客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5. 传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6. 服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7. 传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原

8. 客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

 

 

 

HTTPS通信的优点

客户端产生的密钥只有客户端和服务器端能得到;

加密的数据只有客户端和服务器端才能得到明文;

客户端到服务端的通信是安全的。

 

四 TCP/IP、HTTP、Socket的区别

这三个概念是比较容易混淆的概念,这里尽量解释一下三者之间的区别。

随着计算机网络体系结构的发展,OSI七层网络模型诞生了,这个模型把开放系统的通信功能划分为七个层次,一次完整的通信如下图:

 

每一层都是相互独立的,它利用其下一层提供的服务并为其上一层提供服务,而与其它 层的具体实现无关,所谓"服务"就是下一层向上一层提供的通信功能和层之间的会话约定,一般用通信原语实现。上图中,从下至上分别给层编号为1~7,其中 1~4层为下层协议,5~7层为上层协议,接着回到我们的概念:

1、TCP/IP讲的其实是两个东西:TCP和IP。IP是一种网络层的协议,用于路由选择、网络互连

2、TCP是一种传输层协议,用于建立、维护和拆除传送连接,在系统之间提供可靠的透明的数据传送

3、HTTP是一种应用层协议,提供OSI用户服务,例如事物处理程序、文件传送协议和网络管理等,其目的最终是为了实现应用进程之间的信息交换

4、至于Socket,它只是TCP/IP网络的API而已,Socket接口定义了许多函数,用以开发TCP/IP网络上的应用程序,组织数据,以符合指定的协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值