网络编程基础

1.网络的作用:数据通信,资源共享,负载均衡
2.IP地址作用:寻址,标记网络层实体,保证实体之间消息的正确接收,通俗理解为区分网络上的主机
3.ip信息查询 :
windows:
ubuntu:ifconfig
4.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.关闭socket
8.私有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.255
9.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()

posted on 2019-07-21 08:54 燃烧的砟子 阅读() 评论() 编辑 收藏

版权声明:本文为burningcarbon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/burningcarbon/p/11220182.html