1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 看完这篇网络知识基础 妈妈再也不用担心我不理解编程网络基础

看完这篇网络知识基础 妈妈再也不用担心我不理解编程网络基础

时间:2024-03-27 14:43:28

相关推荐

看完这篇网络知识基础 妈妈再也不用担心我不理解编程网络基础

前言

什么是socket?

Socket的英文原义是“孔”或“插座”。在编程中,Socket被称做 套接字,是网络通信中的一种约定。Socket编程的应用无处不在,我们平时用的QQ、微信、浏览器等程序,都与Socket编程有关。我们平时使用浏览器查资料,这个过程的技术原理是怎样的呢?

我们平时使用浏览器,大致就是这样的一个过程。这里有两个重要的名词: 服务端与 客户端。

Socket编程的目的就是如何实现这两端之间的通信。

Socket编程在编程开发中很重要

Socket编程不仅仅在互联网方面很重要,在我们的嵌入式方面也是非常的重要,因为现在很多电子设备都趋向于联网。比如很多编程行业的招聘要求都会有这一条要求:

说一点题外话,还在学校的朋友,如果感觉到很迷茫,不知道学什么的时候,可以上招聘网站上看看自己未来工作相关的职位的任职要求,这样就可以总结自己的一些不足、比较有针对性的去学习。

Socket编程中的几个重要概念

Socket编程用于解决我们 客户端与 服务端之间通信的问题。我们平时多多少少都有听过IP地址、端口、TCP协议、UDP协议等概念,这些都与Socket编程中相关,想要知道怎么用起来,当然得先了解它们的一些介绍。下面看一下这些专业术语的一些要点介绍:

1、什么是IP地址?

IP地址(InternetProtocolAddress)是指互联网协议地址,又译为 网际协议地址。IP地址被用来给Internet上的电脑一个编号。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”。若计算机1知道计算机2的IP地址,则计算机1就能访问计算机2。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用 点分十进制表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

IP地址有 IPv4与 IPv6之分,现在用得较多的是IPv4。其中,有一个特殊的IP地址需要我们记住: 127.0.0.1,这是回送地址,即本地机,一般用来测试使用。后边我们的实例中会用到。

关于IP地址还有很多知识要点,但是对于在Socket编程中的应用,我们暂且知道这么多就可以。

2、什么是TCP/IP端口?

上一点中我们提到,若计算机1知道计算机2的IP地址,则计算机1就能访问计算机2。但是,我们要访问计算机2中的不同的应用软件,则还得需要一个信息: 端口。端口使用16bit进行编号,即其范围为: 0~65536。但 0~1023 的端口一般由系统分配给特定的服务程序,例如 Web 服务的端口号为 80,FTP 服务的端口号为 21等。

3、什么是协议?

协议(Protocol)是通信双方进行数据交互的一种约定。如TCP、UDP协议:

TCP协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据可以准确发送,数据丢失会重发。TCP协议常用于web应用中。

TCP连接(三次握手)

TCP传输起始时,客户端、服务端要完成三次数据交互工作才能建立连接,常称为三次握手。可形象比喻为如下对话:

客户端:服务端您好,我有数据要发给你,请求您开通访问权限。

服务端:客户端您好,已给您开通权限,您可以发送数据了。

客户端:收到,谢谢。

具体示意图为:

这里的SYN和ACK是都是标志位,其中SYN代表新建一个连接,ACK代表确认。其中m、n都是随机数。具体说明如:

第一次握手:SYN标志位被置位,客户端向服务端发送一个随机数m。

第二次握手:ACK、SYN标志位被置位。服务端向客户端发送m+1表示确认刚才收到的数据,同时向客户端发送一个随机数n。

第三次握手:ACK标志被置位。客户端向服务端发送n+1表示确认收到数据。

TCP断开(四次挥手)

TCP断开连接时,客户端、服务端要完成四次数据交互工作才能建立连接,常称为四次挥手。可形象比喻为如下对话:

客户端:服务端您好,我发送数据完毕了,即将和您断开连接。

服务端:客户端您好,我稍稍准备一下,再给您断开

服务端:客户端您好,我准备好了,您可以断开连接了。

客户端:好的,合作愉快!

具体示意图为:

这里的FIN也是一个标志位,代表断开连接。具体说明类似三次握手。

为什么建立连接只需要三次数据交互,而断开连接需要四次呢?

建立连接时,服务端在监听状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。

而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

UDP协议

UDP(User Datagram Protocol, 用户数据报协议)是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,可以保证通讯效率,传输延时小。例如视频聊天应用中用的就是UDP协议,这样可以保证及时丢失少量数据,视频的显示也不受很大影响。

4、什么是协议族?

协议族是多个协议的统称。比如我们的TCP/IP协议族,其不仅仅是TCP协议、IP协议,而是多个协议的集合,其包含IP、TCP、UDP、FTP、SMTP等协议。

TCP、UDP通信的socket编程过程图

(1)TCP通信socket编程过程

(2)UDP通信socket编程过程

尾言

由于篇幅问题,关于socket的编程应用实例敬请期待,文章都是手打原创,每天最浅显的介绍C语言、C++,windows知识,喜欢我的文章就关注一波吧,每天带你学习C/C++不同的知识,也可以看到最新更新和之前发表的文章哦。如果足下基础比较差,不妨关注下人人都可以学习的视频教程

《C语言51课视频教程合集》

《C++45课视频教程》

通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势

如果今天学到知识的,可以在留言区留言学到了哦,如果喜欢的可以评论,转发,收藏哦,这真的对我很重要!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。