网络编程和套接字
网络编程:两台连网的计算机相互交换数据。
套接字:完成数据传输。
请求套接字创建过程
1.调用socket函数(安装电话机)创建套接字(接电话需要准备什么-安装电话机)
2.调用bind函数分配IP地址和端口(分配电话号码)
3.调用LIsten函数转为可接受请求状态(连接电话线)
4.调用accept函数受理请求的连接(接听电话)
打电话套接字
1.调用socket函数创建套接字
2.调用connect函数向服务器发送连接请求
面向连接的套接字
特点:1.传输过程中数据不会消失
2.按序传输数据
3.传输数据不存在边界
列如:两位工人在一条传输带中传递物品,只要传输带本身没有问题,就能保证数据不会丢失。同时较晚的数据不会先到达,传送带保证了数据的按顺序排列。
这种情况适于write和read函数:传输数据的计算机通过三次调用write函数传递了100字节的数据,但接受数据的计算机仅通过一次read函数调用了100个字节。
套接字的缓冲区read函数读取速度比接受数据的速度慢,则缓冲区可能被填满,此时套接字无法在接受数据,但不会发生数据丢失,套接字将停止传输。
面向消息的套接字
特点:1.强调快速传输而非传输顺序
2.传输的数据可能丢失也可能损失
3.传输的数据有数据边界
4.限制每次传输的数据大小
比如:用摩托车发往同一目的地的2件包裹无需保证顺序,只要以最快的速度交给客户即可。这种方式存在损坏或丢失的风险,而且包裹也有一定的限制。因此,若要传递大量的包裹,则需要分批发送。两个摩托车同时发送同一件包裹,则接受者分别需要接受两次。这种特征就是“传输的数据就有数据边界”。
网络地址
IPV4 4字节地址族
IPV6 16字节地址族
IP用于区分计算机,只要有IP地址就能向目标主机传输数据,IP地址分为网络ID和主机ID。
端口号就是在同一操作系统内区分不同套接字设置而成的,因此无法将1个端口号分配给不同的套接字。端口号是由16位构成,可分配的端口范围是0到65535。端口号不能重复,但TCP与UDO中的套接字可以重复使用。
总之,传输数据目标应同时包含IP地址和端口号,只有这样数据才能被传输到最终的应用程序。
来源:CSDN
作者:Old Tony
链接:https://blog.csdn.net/weixin_44469024/article/details/103880902