2020.3.18

发布于 2020-03-18  14 次阅读


时间规划

8:00 未来之光
8:20 不背单词
8::40 复习知识大纲
9:20 开始上课
12:00 休息
1:30 开始上课
6:00 休息
7:00 复习知识  打代码
10:00 整理接下来的任务

把不做手机控详细设置一下
哔哩哔哩课程汇总,用于补正课时间
提前上完课 就看tcp/ip
阅读        平常1小时 六日3小时
王者荣耀 平常2小时 六日3小时
知乎        平常30分钟 六日1小时

网络原理 第三课

internet(ISP 运营商网络商):机房是一堆运营商组成的,有自己的机房服务,有双线运营,ADSL和光纤
局域网:覆盖范围小,自己买设备,带宽固定,100M左右
广域网:距离比较远,超过100M,花钱买服务,有ISP维护
公网地址,全球唯一,统一规划
地址分为网络部分,主机部分
网段:
一段选择网络ip的范围
子网掩码
告诉哪个是网络部分,哪个是主机部分
网段的第一个地址
路由器,交换机等等常用
网管
其他网段应该给谁
路由器的作用
不同网段转发数据
网卡的MAC地址(路由器等也有MAC地址)
出厂时候就固定了,48位二进制,全球唯一

代办事项

OSI七层模型、TCP/IP模型
python new 和 init
Linux  inode

传输层服务

面向连接的传输服务 tcp

可靠,无丢失,无差错,无重复
分为客户端client,服务端server
三次握手
客户端向服务器发送消息报文请求连接
服务器收到请求后,回复报文确定可以连接
客户端收到回复,发送最终报文连接建立
四次挥手
主动方发送报文请求断开连接
被动方收到请求后,立即回复,表示准备断开
被动方准备就绪,再次发送报文表示可以断开
主动方收到确定,发送最终报文完成断开
适用情况
 对数据传输准确性有明确要求,传数文件较大,需要确保可靠性的情况。比如:网页
获取,文件下载,邮件收发。

面向无连接的传输服务

不可靠,没有连接和断开,数据传输随意
适用情况 : 
网络较差,对传输可靠性要求不高。比如:网络视频,群聊,广播

tcp和udp的区别
三次握手和四次挥手指什么,过程是什么样的

Socket套接字编程

套接字介绍

1. 套接字 : 实现网络编程进行数据传输的一种技术手段
2. Python实现套接字编程:import socket
3. 套接字分类
流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字)
数据报套接字(SOCK_DGRAM):以数据报形式传输数据,实现udp网络传输方案。(无连接--udp协议--不可靠--数据报套接字)
tcp套接字编程
1.创建socker,2.绑定地址bind,3.设置监听listen,4,等待处理客户端连接请求accepta,5.消息收发send

收发消息 细节特征

tcp连接中,一端退出,另一端recv会立即返回空字串
tcp中tcp连接如果一端不存在,调用send会出现管道破裂错误(BrokenPipe 管道破裂

网络收发缓冲区

协调了消息的收发速度
send和recv都是先发送到缓冲区,缓冲区不为空recv,就不会阻塞

tcp沾包

因为没有消息边界,多次发送的消息被一次接收
每次发送内容是否独立,需要接收端解析,沾包会有影响
处理方法:认为添加消息边界,控制发送速度

udp套接字

udp创建流程:
1,创建:socket(Af_INET,SOCK_DGRAM) # 类型有变化 
2.绑定地址:bind(),
3消息收发:recvfrom(),sendto(data,addr),
4关闭套接字 close()

全局变量的定义

1.多个类,多个文件同时使用
2.具有明显特征、比如路径

socket模块方法和socket套接字属性

1. 部分socket模块方法
【1】 gethostname() 获取计算机名
【2】 gethostbyname('www.baidu.com') 获取主机ip地址
【3】 getservbyname('mysql') 获取服务端口号
【4】 getservbyport(3306) 获取端口对应服务
【5】 inet_aton('192.168.1.2') 将IP转换为bytes子串
【6】 inet_ntoa(b'\xc0\xa8\x01\x02') 将bytes子串转换为IP地址
2. 套接字属性
代码实现:day2/sock_attr.py
【1】 sockfd.type 套接字类型
【2】 sockfd.family 套接字地址类型
【3】 sockfd.getsockname() 获取套接字绑定地址
【4】 sockfd.fileno() 获取套接字的文件描述符
【5】 sockfd.getpeername() 获取连接套接字客户端地址
【6】 sockfd.setsockopt(level,option,value)
功能:设置套接字选项,参数: level 选项类别 SOL_SOCKET,option 具体选项内容,value 选项值
【7】 sockfd.getsockopt(level,option)
功能 : 获取套接字选项值

setsockopt(level,option,value) 用法

大类别 第一个参数
IPT开头是大类
SOL开头的也是大类
小类别 第二个参数
IP、SO开头、TCP
作业:
四种排序代码
socket tcp和udp创建连接代码


Ares个人进阶之路