传输层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协议的分层结构,网络层之上是传输层,从层次结构上来看,传输层位于网络 ...
随机推荐
- Hybris阶段总结(2)hybris架构
年前总结一下这两个星期在SAP实习学到的一些东西 先上图: 从底往上总结,之后会有个小例子来解释一下 1.Persistence layer 就是作为hybris所连接的数据库这一层,其中hybr ...
- CSS学习摘要-定位实例
CSS学习摘要-定位实例 注:全文摘自MDN-CSS定位实例 列表消息盒子 我们研究的第一个例子是一个经典的选项卡消息框,你想用一块小区域包括大量信息时,一个非常常用的特征.这包括含有大信息量的应用, ...
- 铁乐学python-面向对象的更多说明
以下内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 面向对象的更多说明 面向对象的软件开发 很多人在学完了python的class机制之后,遇到一个生产中的问题,还是 ...
- C++实现一个Vector3空间向量类(转)
转自:http://www.2cto.com/kf/201311/260139.html ector2,3,4类在DirectX中都有现成的可以调用,不过要实现其中的功能其实也不难,也都是一些简单的数 ...
- python3: 字符串和文本
1. 分割字符串-使用多个界定符[re.split()] >>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>> impo ...
- python -wordcloudan云词安装
1安装网站:https://download.lfd.uci.edu/pythonlibs/u2yrk7ps/wordcloud-1.4.1-cp36-cp36m-win_amd64.whl 2安装过 ...
- Eclipse解决运行、启动缓慢问题思路
我的Eclipse近几天运行时速度奇慢,具体表现为: 1.只要ECLIPSE启动后,硬盘灯就狂闪,不停的读盘: 2.发布TOMCAT经常在0%: 3.偶尔CPU占满: 网上讲优化的文章无数,但是总是有 ...
- iOS 开源库系列 Aspects核心源码分析---面向切面编程之疯狂的 Aspects
Aspects的源码学习,我学到的有几下几点 Objective-C Runtime 理解OC的消息分发机制 KVO中的指针交换技术 Block 在内存中的数据结构 const 的修饰区别 block ...
- C++编译器符号表有哪些内容?
http://blog.csdn.net/wangbingcsu/article/details/48340479 C++编译器符号表有哪些内容? 很早就想写一篇关于符号表的学习小结,可是迟迟不能下笔 ...
- JavaScript中烧脑的&&和||
在js中经常能看到以下的写法: var obj1 = a || b || c; var obj2 = a && b && c; 刚看到时,很容易认为返回的两个变量都是 ...