网络通信的概念以及浅谈套接字socket的作用?

网络通信的概念
1.网络通信
网络通信是指两个主机间的通信,但是这样并不具体,准确来说来说真正进行通信的是主机中的进程。也就是说进行通信的本质上是一台主机上的一个进程和另一个主机上的一个进程进行数据交换。
2.IP+端口号
类比我们生活例子来说就相当于寄快递。IP地址(简单来说就是一台主机地址)就相当于邮寄地址,端口号就相当于某人。那么就有了发送地址(源IP)和接收地址(目的IP),还有发件人(源端口)和收件人(目的端口),这样就能确保快递(数据)传递到想要的那个人的手里去。为什么一定要是以IP+端口号的形式?形象的说就是全中国有很多人叫狗蛋,但是如果指明了是那个村那户的狗蛋。那么就可以确定是想要的人了。
3.IP分类
常说ipv4和ipv6那么有啥子区别?
最大区别就是指数级的数量差别
分类: 我们现在使用的大多还是ipv4,ipv4的地址是32位,也就是说0,1组合可能有2的32次方。然后为了好看,每8位一组,看起来就成了我们的ip:127.0.0.1。ipv4大概43亿个左右,看起来很多但是除了内网专用的192、170这样的地址段,就更少了,更何况地球现在又70多亿人口,ipv4的地址已经慢慢的不能满足我们的需要了,于是为了满足需求就有ipv6这种的,ipv6是128位,也就是2的128次方。单独来看可能没有啥区别。就这么形容这样编号可以编地球上所有的沙子。
那么使用ipv6有啥子好处?
1.速度优势——ipv6的包头是固定的,ipv6协议下的路由表更小。虽然比ipv4长,但是没有携带ipv4携带的那些附加内容。
2.安全优势——使用了IPsec加密数据,ipv4不强制使用加密,所以很多还是明文
3.数量优势——不用说了都不是一个指数级别
为啥子没普及?
1.部署难和ipv4兼容性不太好
2.采用NAT,现在的运营商分给你的都是内网地址不是公网地址。内网是啥?如果你手机连着你家里的路由器,那么上网必须要将你的内网ip转化位公网ip,接收的数据再经过路由器分给你的手机。也就是说公网ip具有世界范围的唯一性,内网具有局域的唯一性。说白了就是细分了公网ip。每台电脑都有自己的ip(内网ip)但是这个ip只有再局域网内才有效,(只能打打cs1.6局域网对战)要连接互联网电信运营商会分配给你一个ip,这个才是你的外网ip。(这才能打穿越火线)
4.端口号:
都知道端口标记了唯一的进程,但是一个进程只能被一个端口标记嘛?
答案是否定的,进程可以对应多个端口,但是一个端口只能标记一个进程。
网络通信的概念以及浅谈套接字socket的作用?可以通过多个端口来监视一个进程的状态。

啥是套接字(socket)?
socket的本质是一个接口,可以看做是网络和主机的一个“连接关节”(就是把两个东西链接起来),是应用程序通过网络协议进行通信的接口。到现在我们基本上就说,为了更加便捷的开放网络程序所使用的一套规范,使用这套规范程序员可以更加方便的访问TCP/IP,而不用过多的了解网络具体的通信方式。
网络通信的概念以及浅谈套接字socket的作用?socket= ip+端口+传输协议
网络通信的概念以及浅谈套接字socket的作用?一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。至于内部是怎么实现的,是大牛们帮我们实现的一套规范。所以说它是一个应用接口(API)我们只要调用就可以了,我们学习 socket,也就是学习计算机之间如何通信,并编写出实用的程序。

套接字分类:
1.流套接字(SOCK_STREAM)
流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP协议 。
2.数据报套接字(SOCK_DGRAM)
数据报套接字提供一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理 [3] 。
3.原始套接字(SOCK_RAW)
原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接 。
套接字工作流程
1.服务器监听
2.服务器请求
3.链接确认
(这就到TCP,UDP那块的知识了,常见的是TCP三次握手四次挥手,详见另一个博客tcp的三握四挥)