网络编程基础

匿名 (未验证) 提交于 2019-12-02 23:49:02
1.网络的作用:数据通信,资源共享,负载均衡2.IP地址作用:寻址,标记网络层实体,保证实体之间消息的正确接收,通俗理解为区分网络上的主机3.ip信息查询 :   windows:   ubuntu:ifconfig4.ip地址   版本分类:IPv4,IPv6   IPv4 32位二进制数,4组每组8位  构成:类别号+网络号+主机号      分类         A:0+7位网络号+24位主机号         B:10+14位网络号+16位主机号         C:110+21位网络号+8位主机号         D:用于多点广播(多播)         E:保留5.端口:留给主机上的程序与外界通信的借口,      端口号:区分同一个主机的程序,同一个主机上可能运行多个程序与外界进行网络通信,仅仅通过ip地址      分配:范围0-65535         知名端口:0-1023 分配给常用功能与基本程序,事先分配好的,不建议改动         动态端口:1024-65535 自定义分配6.标识主机:网络层IP地址,标识进程:传输层协议+端口7.套接字socket:进程间通信的一种方式,与其他进程间通信不同的是可实现不同主机间的进程通信    发送信息步骤(udp socket):        1.创建套接字  实例化socket socket.socket(参数)            参数一:地址簇                    socket.AF_INET IPv4(默认)                  socket.AF_INET6 IPv6                    socket.AF_UNIX 只能够用于单一的Unix系统进程间通信            参数二:协议类型              socket.SOCK_STREAM  流式socket , for TCP (默认)              socket.SOCK_DGRAM   数据报式socket , for UDP        2.准备接收方的地址   det_addr = (ip字符串,端口号)        3.获取数据  send_data=        4.开始发送 实例.sendto(send_data.encode("utf-8"),dest_addr)    用socket发送的数据必须是字节码byte类型        5.关闭套接字实例  实例.close()        可以不用绑定ip和端口,系统会分配本地ip和随机端口    接收信息步骤:        1.创建套接字        2.绑定本地相关信息(ip+端口号)必须是本机相关信息            local_addr = (ip字符串,端口号)  ip字符串一般为空,表示本机任何一个ip            实例.bind(local_addr)        3.等待接收对方发送的数据            recv_data = 实例.recvfrom(能接收的最大字节数)  recv_data是一个元组(接收到的数据,(发送方ip,port))        4.解码数据 recv_data[0].decode()        5.关闭socket8.私有IP 国际规定有一部分ip用于局域网使用,属于私网IP,不在公网中使用    范围 10.0.0.0-10.255.255.255         172.16.0.0-172.31.255.255.255         192.168.0.0-192.168.255.2559.socket属于全双工,可同时收发10.TCP和UDP区别:    TCP                                         UDP    面向连接                                  无连接    有序数据传输    面向字节流                                面向报文    传输效率低、全双工(发送缓存、接收缓存)  效率高    可靠                                      不可靠    重发丢失的数据包    舍弃重复的数据包    无差错数据传输                            尽最大努力交付    阻塞/流量控制                             无拥塞控制    应用:Web浏览器、电子邮件、文件传输程序。 应用:域名系统 (DNS);视频流;IP语音(VoIP)。11.TCP socket创建客户端步骤步骤:(一般不绑定端口)    1.创建tcp套接字        实例化socket   socket名称 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    2.创建链接        socket实例名.connect((服务器ip字符串,服务器端口))    3.发送/接收        实例名.send(信息字符串.encode("utf-8"))    4.关闭套接字        实例名.close()12.TCP socket创建服务器端步骤:    1.创建tcp套接字        socket名称 = socket。socket(ocket.AF_INET,socket.SOCK_STREAM)    2.绑定ip和port        实例名.bind((ip字符串,端口号)    3.监听(将socket由主动连接变成被动接受连接的模式)        实例名.listen(128)    4.等待客户端的链接        子连接socket、客户端地址 = 客户端实例名.accept()    5.接收和发送数据        data = 子连接socket.recv(最大字节数)   当客户端发来数据或者客户端socket关闭时,recv解堵塞        子连接socket.send(数据字符串.encode("uft-8"))    6.关闭套接字    子连接socket.close()    服务器socket实例.close()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!