一、传输层

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套字节方法的更多相关文章

  1. (传输层)TCP协议

    目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...

  2. 传输层TCP协议

    目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...

  3. OSI模型第四层传输层--TCP协议

    1.传输层2个协议tcp和udp 2.tcp的可靠性(挂号信). 面向链接的:类似寄挂号信,对方收到了并且能够确认.所以也是可靠的传输. 最大报文传输:两端可以协商传输报文大小.(协商一个报文的大小) ...

  4. TCP/IP五层模型-传输层-TCP协议

    ​1.定义:TCP是一种面向连接.可靠的.基于字节流的传输控制协议. 2.应用场景:TCP为可靠传输,适合对数据完整性要求高,对延时不敏感的场景,比如邮件. 3.TCP报文:①TCP报文格式: ②TC ...

  5. [TCP/IP] 传输层-TCP和UDP的使用场景

    传输层-TCP和UDP应用场景 TCP(传输控制协议) 需要将要传输的文件分段传输,建立会话,可靠传输,流量控制 UDP(用户报文协议) 一个数据包就能完成数据通信,不需要建立会话,不分段,不用流量控 ...

  6. 我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。

    早上使用.Net WebClient类采集亚马逊数据,返回http 400 Bad Request错误,内容里面有“我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 ...

  7. [转帖]传输层安全协议TLS 1.3 RFC 8446使互联网更快、更安全

    传输层安全协议TLS 1.3 RFC 8446使互联网更快.更安全 2018-08-12 11:38:19作者:LINUX人稿源:开源社区 https://ywnz.com/linuxyffq/261 ...

  8. 传输层-TCP

    UDP协议提供了端到端之间的通讯,应用程序只需要在系统中监听一个端口,便可以进行网络通讯.随着计算机网络的发展,计算机网络所承载的业务越来越多,有些业务数据的传输需要具备可靠性,譬如我们在进行在线聊天 ...

  9. 计算机网络【六】:传输层-TCP概述 【转】

    转自:http://blog.chinaunix.net/uid-26275986-id-4109209.html 根据TCP/IP协议的分层结构,网络层之上是传输层,从层次结构上来看,传输层位于网络 ...

随机推荐

  1. QtPropertyBrowser+vs2010的安装与配置

    之前编译过一次QtPropertyBrowser2.5,见文章http://www.cnblogs.com/aminxu/p/4516469.html,当时很激动,编译成功,lib也都编译通过,程序调 ...

  2. 微信小程序websocket

    微信小程序websocket 微信小程序带有websocket可以提供使用,但是官方文档写的东西很少,而且小程序后台能力弱这一点也是十分的坑爹,这就导致了socket长连接一切后台就会出现断开的情况, ...

  3. jiekou

    接口 新的接口 package cn.eangaie.jingdong.controller;   import cn.eangaie.jingdong.entity.Result; import c ...

  4. Civil War

    Civil War 编辑 <Civil War>是美国硬摇滚乐队枪炮与玫瑰的一首单曲,首次收录于1990年的群星慈善专辑<Nobody's Child: Romanian Angel ...

  5. fun() 的 拆分和 for 遍历 的结合---------> 函数容器

    fun() 的 拆分和 for 遍历 的结合--------->  函数容器

  6. quartz(转)

    1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...

  7. 学习python第四天——Oracle查询

    3.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: 执行顺序:先执行子查询得到结果以后返回给主查询 组成部分: 1).主查询部分 2).子查 ...

  8. [HAOI2018]奇怪的背包

    题目 暴力\(dp\)好有道理啊 于是我们来个反演吧 考虑一个体积序列\(\{v_1,v_2,...v_n\}\)能凑成\(w\)的条件 显然是 \[v_1x_1+v_2x_2+...+v_nx_n\ ...

  9. etherlime-2-Etherlime Library API-deployer

    Etherlime Library API 库API Deployer部署者 Deployer functionality The main functionality the deployer ex ...

  10. mongodb的学习-1-NoSQL

    菜鸟教程的学习笔记-http://www.runoob.com/mongodb/nosql.html 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有 ...