net学习笔记2

网络概念

主机 端口 ip 协议
服务端:localhost/127.0.0.1
客户端:只能本机启动客户端 用127.0.0.1访问

服务端:0.0.0.0
客户端:可以在本机用127.0.0.1\192.168.0.106 访问;局域网内用192.168.0.106 访问

服务端:192.168.0.106
客户端:局域网内用 192.168.0.106 访问

流式套接字 —> tcp 可靠 有连接
数据报套接字 —> udp 不可靠 无连接

TCP客户端流程
socket ->bind -> listen -> accept -> recv/send -> close

recv() 特征

  • 如果连接的另一端断开连接,则recv立即返回空字符串
  • recv是从接受缓冲区取出内容,当缓冲区为空则阻塞
  • 如果一次接受不完缓冲区内容,下次会继续接收
    send()特征
  • 如果发送的另外一段不存在则产生Pipe Broken(管道破裂)
  • recv是向发送缓冲区发送内容,当缓冲区为满,堵塞

网络的收发缓冲区
在内存中开辟的区域,用作发送和接受的缓冲

  • 协调数据收发(接受和处理)速度
  • 减少和磁盘的交互

sellall(data)
功能:tcp套接字发送消息
参数:同send
返回值:如果发送成功返回None,如果发送不成功则产生异常

tcp粘包
产生原因:

  • tcp传输以字节流的方式发送消息,消息之间没有边界
  • 发送比接收的速度快
    影响:对每次发送的内容时一个独立的意思需要独立识别
    如何处理:
    1.每次发送后加一个结尾标志
    2.发送一个数据结构
    3.每次发送有一个间隔

基于UDP的服务端编程

1.创建套接字
sockfd = socket(AF_INET,SOCK_DGRAM)
2.绑定地址
sockfd.bind()
3.消息收发
data,addr = sockfd.recvfrom(buffersize)
功能:接收UDP消息
参数:每次最多接收消息的大小,字节
返回值:data 接受到的内容
addr消息发送方的地址

  • recvfrom 每次接收一个报文,如果没有接受完全则丢弃没有收到的内容

sockfd.sendto(data,addr)
功能:UDP消息发送
参数:data 要发送的内容 bytes,addr 目标地址, 返回值:发送的字节数

4.关闭套接字
sockfd.close()

tcp流式套接字和udp数据报套接字区别
1.流式套接字采样字节流方式进行传输,而数据报套接字使用数据报形式传输数据
2.tcp套接字会产生粘包,udp不会
3.tcp编程可以保证消息的完整性,udp则不能保证
4.tcp需要listen accept,而udp不用
5.tcp的消息发送接受使用recv send sendall,udp使用recvfrom ,sendto

要求:能够说出tcp,udp 协议的区别和编程实现上的差异

socket模块和套接字属性
(s为套接字)

套接字属性
s.type:表示套接字类型
s.family:地址类型
套接字属性方法
s.fileno()
功能:获取套接字的文件描述符
文件描述符:每一个IO事件操作系统都会分配一个不同的正整数与之匹配,该整数即为此IO的文件操作符
s.getsockname()
功能:获取套接字绑定的地址
s.getpeername()
功能:获取连接套接字客户端的地址
s.setsockopt(level,optname,value)
功能:设置套接字选项
参数:level 设置选项的类型;optname 子类选项 ;value 要设置的值
设置端口可立即重用
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
s.getsockopt()
功能:打印套接字选项值

udp套接字应用 ==> 广播
一点发送,多点接收
目标地址:广播地址

tcp应用 —> http传输

http协议 --> 超文本传输协议

用途:网站中浏览器获取网页的过程;编写基于http协议的数据传输

特点:
1.应用层协议,传输层使用tcp服务
2.简单,灵活,可以使用多种编程语言操作
3.无状态的协议,即不记录用户的输入内容
4.http1.1版本 ----> http2.0 技术成熟度和稳定性

http请求(request)

请求格式:
请求行:具体的请求类别和请求内容

GET/index.htmlHTTP/1.1
请求类别请求内容协议版本

请求类别:

  • GET: 获取网络资源
  • POST:提交一定的附加数据,得到返回结果
  • HEAD:获取相应头
  • PUT:更新服务资源
  • DELETE:删除服务器资源
  • CONNET
  • TRACE:用于测试
  • OPTIONS:获取服务器性能
    请求头:对请求的具体描述
    Accept:text/html
    ×每一个键值对占一行,描述了一个特定信息
    空行
    请求体:具体的参数或者提交的内容
    get参数或者post提交的内容

http响应(response)
响应行:反馈具体的响应情况

HTTP/1.1200OK
协议版本响应码附加信息

响应码: 1×× 提示信息,表示请求已经接受
2××响应成功
3××响应需要重定向
4××客户端错误
5××服务端错误

常见响应码具体内容
200成功
404请求内容不存在
401没有访问权限
500服务器发生未知错误
503服务器暂时无法执行

响应头:对响应内容的具体描述
Content-Encoding:gzip
Content-Type:text/html
空行
响应体:将客户端请求内容进行返回

要求:
1.知道http作用
2.掌握http协议,请求和响应的格式以及每一部分做什么
3.掌握http协议中请求的基本类型和作用
4.知道http协议响应码的类型和表达含义
5.了解通过http协议请求网页的流程

作业:编写一个程序,完成一个文本文件(图片)在服务端和客户端之间的传输 要求使用tcp套接字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值