今日内容

1、TCP协议

协议的特点:三次握手,四次挥手;

2、UDP协议

3、OSI七层模型:每层的物理设备,每一层协议。

4、代码部分:

①介绍socket;

②使用socket完成tcp协议的web通信;

③使用socket完成udp协议的web通信。

1、TCP协议

1、可靠,慢,全双工通信
2、建立连接的时候,三次握手
3、断开连接的时候,四次挥手
4、在建立起连接后
发送的每条信息都有回执
为了保证数据的完整性,还有重传机制
5、长连接:会一直占用双方的端口
6、I/O操作(input,output),输入输出相对内存来说的。
write,send:输出 output
read,recv:输入input
能够传输的数据没有限制

2、UDP协议

1、无连接的,速度快
2、可能会丢消息
能够传输的数据长度有限的,是根据数据传输设备设置有关(MTU)
应用场景:
TCP:文件的上传,下载(邮件,网盘,缓存电影)
UDP:即时通信(QQ,微信)

3、OSI7层模型

应用层 :http,https,ftp,smtp
表示层
会话层
#应用层(开发角度,五层协议)--》代码
传输层,tcp,udp
网络层,ipv4,ipv6 (路由器)
数据链路层,mac,arp(网卡,交换机)
物理层

4、抽象层

socket  中文名:套接字
python socket模块 完成socket的功能
工作在应用层和传输层 之间的抽象层
帮助我们完成了所有信息的组织和拼接
socket对于程序员来说,已经是网络操作的底层了。
socket历史
同一台机器上的两个服务之间的通信
基于文件
基于网络的多态机器之间的多个服务通信
TCP协议:
###########
server端: import socket
sk=socket.socket()
sk.bind(('127.0.0.1',9000))
sk.listen()
print('*'*20)
conn,addr=sk.accept()
while True:
msg=conn.recv(1024).decode('utf-8')
if msg.upper()=='Q':break
print(msg)
ipn=input(">>>")
conn.send(ipn.encode('utf-8'))
if ipn.upper()=='Q':break
conn.close()
sk.close() ################
client端:
import socket sk=socket.socket()
sk.connect(('127.0.0.1',9000))
while True:
ipn=input(">>>")
sk.send(ipn.encode('utf-8'))
if ipn.upper()=='Q':break
msg=sk.recv(1024).decode('utf-8')
if msg.upper() == 'Q': break
print(msg)
sk.close()
========================
UDP协议:
server: import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',9000))
while True:
msg,client_addr=sk.recvfrom(1024)
print(msg.decode('utf-8'))
msg=input(">>>").encode('utf-8')
sk.sendto(msg,client_addr)
sk.close() client: import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
while True:
inp=input('>>>').encode('utf-8')
sk.sendto(inp,('127.0.0.1',9000))
ret=sk.recv(1024)
print(ret)
sk.close()

python笔记28(TCP,UDP,socket协议)的更多相关文章

  1. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  2. TCP&UDP&Socket讲解(上)

    这两天我将整理TCP&UDP&Socket,大约花大家10-15分钟之间,希望本篇文章让大家对TCP使用的理解提高一个层次. 建议大家拿出纸和笔,画一下!!! 一.TCP 1. TCP ...

  3. TCP/UDP,SOCKET,HTTP,FTP 简析

    (一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议 传 ...

  4. TCP UDP socket http webSocket 之间的关系

    ---恢复内容开始--- OSI&TCP/IP模型 要弄清tcp udp socket http websocket之间的关系,首先要知道经典的OSI七层模型,与之对应的是TCP/IP的四层模 ...

  5. Fixed-Length Frames 谈谈网络编程中应用层(基于TCP/UDP)的协议设计

    http://blog.sina.com.cn/s/blog_48d4cf2d0101859x.html 谈谈网络编程中应用层(基于TCP/UDP)的协议设计 (2013-04-27 19:11:00 ...

  6. Bash Shell 下打开一个TCP / UDP SOCKET

    Bash Shell 下打开一个TCP / UDP SOCKET http://jingyan.baidu.com/article/636f38bb6166c3d6b84610d1.html

  7. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  8. HTTP TCP UDP Socket 关系的几个经典图

      从上图可以看到,TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议与UDP协议. ...

  9. Python 网络通信协议 tcp udp区别

    网络通信的整个流程 在这一节就给大家讲解,有些同学对网络是既熟悉又陌生,熟悉是因为我们都知道,我们安装一个路由器,拉一个网线,或者用无限路由器,连上网线或者连上wifi就能够上网购物.看片片.吃鸡了, ...

  10. 基于tcp/udp的协议

    使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口.常说某某计算机开了FTP服务便是启动了文件传输服务.下载文件,上传主页,都要用到FTP服务. (2) Tel ...

随机推荐

  1. 在Linux生成公钥后,使用git拉代码仍然需要密码的问题

    一顿回车生成公钥后,用git拉代码还是需要输入密码 原因比较简单,在于.ssh 文件夹 及 authorized_keys文件的权限问题,全部修改为 700 即可,用下面命令 chmod -R 700 ...

  2. android基于MVP小说网络爬虫、宝贝社区APP、仿虎扑钉钉应用、滑动阴影效果等源码

    Android精选源码 android宝贝社区app源码 android仿Tinder最漂亮的一个滑动效果 android仿滴滴打车开具发票页,ListView粘性Header Android基于MV ...

  3. python中读取mat文件

    mat数据格式是Matlab的数据存储的标准格式 在python中可以使用scipy.io中的函数loadmat()读取mat文件. import scipy.io as scio path = 'e ...

  4. Excel-DNA开发包:ExcelDna-0.34.6.zip下载

    Excel-DNA可以用VB.Net或C#开发Excel自定义函数.制作.xll格式的加载宏. 点此下载 ExcelDna-0.34.6.zip

  5. 乐观锁(Optimistic Lock)

    乐观锁(非阻塞)指不通过锁表来解决并发问题,一般情况下表数据都会加入一个version字段,对该字段进行比较更新来保证数据的一致性. 这里写了个demo,应该可以说明乐观锁的问题. public cl ...

  6. Java IO: 其他字符流(下)

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackReader,LineNumberReader,St ...

  7. 移动端Video标签踩坑记录

    需求 用户能在手机上上传视频并预览. 问题 上传完成后安卓下封面展示正常,ios下封面空白.如下图所示: 利用canvas截取视频第一帧发现,ios下截取到的第一帧一直是空白图片, 安卓正常. 后端利 ...

  8. Junit 单元测试在 intelliJ IDEA 中的安装

    1.为什么使用Junit我们都知道,main 方法是一个程序的入口,通常来说,没有main方法,程序就无法运行.我们经常会写一些class文件(如下图所示),他们并没有自己的main方法.那么我们如何 ...

  9. Android蓝牙----打开,关闭操作

    ① 我们先在AndroidManifest里面增加我们的Bluetooth权限 <uses-permission android:name="android.permission.BL ...

  10. Angular系列一:Angular程序架构

    Angular程序架构 Angular程序架构 组件:一段带有业务逻辑和数据的Html服务:用来封装可重用的业务逻辑指令:允许你向Html元素添加自定义行为模块: 环境搭建 安装nodeJs安装好no ...