2021-10-22 常用通信协议介绍(HTTP,UDP,TCP,HTTPS)整理

前言
网络协议是网络上所有设备进行通信的一种规则,每个不同的网络层之间有着不同的协议进行连接,每一层都有各自的网络协议,接收方和发送方使用的网络协议必须相同,否则无法通讯。

本文总结一下常见的网络协议,以及常见的相关问题。

TCP和UDP协议
TCP和UDP协议的区别是常见的问题,我们基本能记住的就是TCP更加稳定,而UDP相对更不稳定,那么为什么TCP更加稳定呢,因为它使用了三次握手四次挥手进行链接建立,然后顺着这个问题问下去,这个可扩充的知识点就有很多了,所以要想真正搞懂TCP协议也不容易。

在这里先总结一下两个协议的区别:

TCP是面向链接的,UDP是无连接的,即发送数据之前不需要建立链接;
TCP使用三次握手四次挥手,传送的数据更加无差错,更加准确,且有序;UDP不保证可靠交付数据;
TCP面向字节流,是把数据看成一段字节流,发送出去,而UDP是面向报文的,UDP没有拥塞控制,所以不会出现拥塞问题;
TCP是点对点进行连接交互,而UDP可以一对一,一对多,多对一,多对多进行交互通讯;
TCP的逻辑信道是可靠的全双工信道,而UDP是不可靠信道。

简单地说,TCP协议更加精确,但是精确是要付出资源的代价,你多付出资源,就能给你准确的信息传递,而UDP就是相反,UDP一般处理多台client要发生数据的情况。

我总结了一下TCP和UDP协议具体编程的步骤:
TCP服务器:

使用socket()函数创建socket,
使用bind()将端口信息,IP地址等绑定到socket中;
使用listen()函数进行监听;
使用accept()函数进行接收客户端信息与客户端建立连接;
使用send()和recv()函数进行发送和接收信息;
关闭网络连接
关闭监听。
TCP客户端:

使用socket()函数进行套接字创建;
使用bind()将端口信息,IP地址等绑定到socket中;
设置对方要连接的端口和IP地址;
使用connect()函数进行连接服务器;
使用send(),recv()函数进行数据的发送和接收;
关闭网络连接。
UDP相对于就更简单一点,由于我没写过相关的项目,所以这里简单总结一下:

UDP服务器创建socket都一样,收发数据使用函数recvfrom();

UDP客户端创建socket和TCP也一样,收发数据使用sendto()函数;

TCP协议中的重点,三次握手和四次挥手
我简单的画一个图:
在这里插入图片描述

SYN是同步的意思,ACK是确认已收到,FIN是结束的意思

三次握手简单的来说:

约吗?

约?

走起!

四次挥手:

不玩了

我也不玩了

好的再见

拜拜

三次握手和四次挥手还有一些相连性的问题,比如说为什么是三次,两次不行吗?

为什么是四次挥手,三次可以吗?三次握手在那个阶段最容易受到攻击,四次挥手在哪个阶段最容易受到攻击等问题。

这些我在别的博客会总结,不然偏离了这篇博客的重心。

TCP和UDP就说这么多,下面我们来看看HTTP和HTTPS

首先我们先了解一下关于这两个协议:

HTTP协议
首先我们输入一个网址之后,网页前面会加上http://,这个http就是通信协议,后面的就是域名地址。

HTTP协议是一种使用明文传输数据的网络协议。其最大的问题,就是使用明文发生数据,试想一下,你在网址中输入自己的银行卡号和银行卡密码,发送的数据被第三方截到了,那你这张银行卡就是一张银行卡了,所以为了避免这种隐患,就有了HTTPS协议。

HTTPS协议
HTTPS协议就是在HTTP协议中加上SSL加密协议,使发送的数据是经过加密之后的数据,使得信息安全性得到保障,这也是HTTPS协议和HTTP协议最大的区别,此外,HTTPS协议需要申请CA证书,才能在网页中使用。

总结一下,HTTP和HTTPS协议的区别有:
HTTP协议是明文数据,HTTPS协议是加密数据;
HTTPS协议需要CA证书认真,因此更加昂贵;
HTTPS协议在HTTP协议中加了SSL加密;
搜索引擎中会优先搜索HTTPS协议。

猜你喜欢

转载自blog.csdn.net/lxqasn/article/details/120910407