传输层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协议的分层结构,网络层之上是传输层,从层次结构上来看,传输层位于网络 ...
随机推荐
- Redis学习---CentOs/RedHat下Redis的安装
redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境. 安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gc ...
- GitBlit集成AD域LDAP
GitBlit的配置文件: gitlblit安装目录下的 /data/gitblit.properties ,用记事本或其他编译器打开即可. 集成AD域的LDAP操作步骤 打开配置文件,添加以下内 ...
- Spring Security自定义GrantedAuthority前缀
如果我们正使用Spring Security提供默认的基于方法的权限认证注解如下: @PreAuthorize("hasAnyRole('ADMIN', 'USER')") pub ...
- 铁乐学python_day18-19_面向对象编程1
以下笔记绝大部分(百分之80或以上)摘自我的授课老师之一:老男孩教育中的景老师. 她上课讲的知识点由浅入深,引人入胜,听她的课完全不会感觉到困阿,而且不知不觉中就感觉掌握了. 她的博客是: http: ...
- shell study
目录 shell记录 执行脚本 变量使用 注释 shell传递参数 运算符 echo printf test 流程控制 if ... else ... for while until case 跳出循 ...
- php中查询时间
在做查询过程中,例如要实现查上个月从第一天到最后一天的佣金(提成),那我们在程序实现过程中就要让程序在上个月的范围内查询,第一天是比较好办,但最后一天就不定,要去写段函数进行月份及年份判断来得出上个月 ...
- ZT 类模板的声明和实现是不能分离的
http://bbs.csdn.net/topics/380250382 adlay adlay 等级: #9 得分:0 回复于: 2012-03-31 11:19:35 引用 6 楼 的回复: 引 ...
- BM求递推式模板
时间复杂度\(O(N^2)\),原理不明...... #include <cstdio> #include <cstring> #include <cmath> # ...
- myFocus 焦点图/轮播插件
最近产品突然就来个需求,要加轮播图,而且是立马要上线,于是乎发现了一个超级简便好用的轮播图插件myFocus,而且myFocus提供很多种风格,可以选择. 这里是使用说明 http://www.chh ...
- 微信小程序 动态加载class
<view class=' {{topid==1?"top": "untop"}}' >