传输层tcp协议以及scoket套字节方法
一、传输层
1、传输层的由来:
网络层的IP帮我们区分子网
以太网的Mac帮我们找到主机
所以通过IP和Mac找到了一台特定的主机
如何找到该特定主机的应用程序呢?
答案是通过端口,端口即应用程序与网卡关联的编号
2、传输层的功能:
建立端口与端口的通信
补充:端口范围0-65535 ,0-1023为系统占用端口
二、TCP协议
又称为好人协议以及可靠协议
tcp是可靠的数据传输:
最可靠的方式就是得不到确认,就重新发送数据报,知道得到对方的确认为止
TCP建立了一个双向通路,实现了数据的三次握手和四次挥手
三、socket介绍
定义:
socket是应用层与TCP/IP协议族通信的中间软件抽象,他是一组接口。
服务端套接字函数
s.bind()绑定(主机、端口号)到套字节
s.listen()开始TCP监听
s.accept()被动接受TCP客户的连接,(阻塞式)等待连接的到来
客户端套字节函数
s.connect()主动初始化TCP服务器连接
公共用途的套字节函数
s.recv()接收数据
s.send()发送数据
s.sendall()发送完整数据
s.close()关闭套字节
四、简单远程执行命令程序的开发
#客户端
import socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 买电话
phone.bind(('127.0.0.1',)) #插手机卡,补充:- -1024给系统用的
phone.listen() # 开机 print('start...')
conn,client_addr=phone.accept() # 等电话连接
print('连接来了:',conn,client_addr) # 收发消息
msg=conn.recv() #收消息,1024是一个最大的限制
print('客户端的消息: ',msg)
conn.send(msg+b'SB') # 挂电话
conn.close()
# 关机
phone.close() #服务端
import socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 买电话
phone.connect(('127.0.0.1',)) # 拨电话,地址为服务端的ip和端口 phone.send('你好'.encode('utf-8')) # 发消息b'hello'
data=phone.recv() #收消息 print(data.decode('utf-8'))
五、加上通讯循环与连接循环
#服务端
import socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.bind(('127.0.0.1',))
phone.listen() print('start...')
while True: # 连接循环
conn,client_addr=phone.accept()
print('客户端 ',client_addr) while True: # 通信循环
try:
msg=conn.recv()
print('客户端的消息: ',msg)
conn.send(msg+b'SB')
except ConnectionResetError:
break
conn.close()
phone.close() #客户端1
mport socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 买电话
phone.connect(('127.0.0.1',)) # 拨电话,地址为服务端的ip和端口 while True:
msg=input('>>>: ').strip()
phone.send(msg.encode('utf-8')) # 发消息b'hello'
data=phone.recv() #收消息 print(data.decode('utf-8')) phone.close() #客户端2
mport socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 买电话
phone.connect(('127.0.0.1',)) # 拨电话,地址为服务端的ip和端口 while True:
msg=input('>>>: ').strip()
phone.send(msg.encode('utf-8')) # 发消息b'hello'
data=phone.recv() #收消息 print(data.decode('utf-8')) phone.close() #客户端3、.........
传输层tcp协议以及scoket套字节方法的更多相关文章
- (传输层)TCP协议
目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...
- 传输层TCP协议
目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...
- OSI模型第四层传输层--TCP协议
1.传输层2个协议tcp和udp 2.tcp的可靠性(挂号信). 面向链接的:类似寄挂号信,对方收到了并且能够确认.所以也是可靠的传输. 最大报文传输:两端可以协商传输报文大小.(协商一个报文的大小) ...
- TCP/IP五层模型-传输层-TCP协议
1.定义:TCP是一种面向连接.可靠的.基于字节流的传输控制协议. 2.应用场景:TCP为可靠传输,适合对数据完整性要求高,对延时不敏感的场景,比如邮件. 3.TCP报文:①TCP报文格式: ②TC ...
- [TCP/IP] 传输层-TCP和UDP的使用场景
传输层-TCP和UDP应用场景 TCP(传输控制协议) 需要将要传输的文件分段传输,建立会话,可靠传输,流量控制 UDP(用户报文协议) 一个数据包就能完成数据通信,不需要建立会话,不分段,不用流量控 ...
- 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。
早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...
- [转帖]传输层安全协议TLS 1.3 RFC 8446使互联网更快、更安全
传输层安全协议TLS 1.3 RFC 8446使互联网更快.更安全 2018-08-12 11:38:19作者:LINUX人稿源:开源社区 https://ywnz.com/linuxyffq/261 ...
- 传输层-TCP
UDP协议提供了端到端之间的通讯,应用程序只需要在系统中监听一个端口,便可以进行网络通讯.随着计算机网络的发展,计算机网络所承载的业务越来越多,有些业务数据的传输需要具备可靠性,譬如我们在进行在线聊天 ...
- 计算机网络【六】:传输层-TCP概述 【转】
转自:http://blog.chinaunix.net/uid-26275986-id-4109209.html 根据TCP/IP协议的分层结构,网络层之上是传输层,从层次结构上来看,传输层位于网络 ...
随机推荐
- Oracle Order By 排序 非主键时 紊乱 重复 问题
Oracle的分页查询是没有进行任何排序操作的,Oracle是顺序的从数据块中读取符合条件的数据返回到客户端. 而Oracle的排序算法不具有稳定性,也就是说,对于排序键值相等的数据,这种算法完成排序 ...
- ORA-28547:(Navicat Premium连接oracle报错)
1.背景 Navicat Premium连接oracle报 ORA-28547:connection to server failed, probable Oracle Net admin errro ...
- Entity Framework的基本操作
一.使用基本的方法进行增删改查 二.使用状态进行增删改查,即使用基类对象进行操作 三.多个表同时进行添加 添加数据后获取自动增长 ...
- list(range())--------range创建一个list列表 遍历索引range(len()) 和 list(range())创建列表
lst = list(range(15,26)) #注,list(range())用的是小括号哦print(lst)
- 微信公众平台OAuth2.0授权
1. 配置授权回调页面域名 进入微信公众平台后台后,依次进入开发者中心-权限表,找到网页授权获取用户基本信息,点击右侧的修改. 授权回调域名配置规范为全域名并且不带http,比如需要网页授权的域名为: ...
- 为什么说Java中只有值传递----说服自己
在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了.如果你有以下想法,那么你有必要好好阅读本文. 错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递.如果是个引用,就 ...
- 1055. [HAOI2008]玩具取名【区间DP】
Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替, ...
- ansible--02
一.目录结构: 二.配置文件解析 1. Inventory:主机列表配置文档 2.ansible.cfg:可存放多地 2.1 ansible读取此conf的顺序:当前命令执行目录-- >用户家目 ...
- Docker存储方式选型建议
转自:https://segmentfault.com/a/1190000007168476 第一部分 问题诊断 事情从一次实施项目说起,我们需要帮助客户将他们的应用容器化并在数人云平台上发布此应用. ...
- python自动化之models 进阶操作二
################################################################## # PUBLIC METHODS THAT ALTER ATTRI ...