python29-socket初识

本篇文章主要讲的是socket基本操作。包括网络通信三要素、TCP三次握手以及socket通信流程等。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!

01:OSI模型

1)OSI模型包括应用层、表示层、会话层、传输层、网络层、数据链路层、物理层这7层。常用的主要是应用层和传输层,其余就不一一介绍。

2)应用层:网络服务和一些终端的应用。比如HTTP协议、FTP协议

3)传输层:定义了一些传输数据的协议和端口号。如UDP协议、TCP协议

02:网络通信三要素(IP地址、端口号、传输协议)

1)IP地址:表示网络上一台独立的主机 ; IP地址=网络地址+主机地址。其中特殊的IP地址:127.0.0.1(本地回环地址),表示本机

2)端口号:用于标识进程的逻辑地址;不同的进程都有不同的端口标识。

3)传输协议:通讯的规则。

UDP:用户数据报协议。面向无连接,传输数据之前源端和目的端不需要建立连接。如实时在线聊天、视频会议等

TCP:传输控制协议面向连接,传输数据之前需要建立连接。在连接过程中进行大量数据传输,通过“三次握手”的方式完成连接,是安全可靠协议。传输速度慢效率低

03:TCP三次握手

1)TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)通俗的理解为:

套接字A:“你好,套接字B,我这里有数据要传送给你,建立连接吧。”
套接字B:“好的,我这边已准备就绪。”
套接字A:“谢谢你受理我的请求。”

2)三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了

04:socket通信流程

1)创建服务端socket对象。对象创建时,需要绑定它的IP地址(IPv4或Ipv6)和协议(TCP或UDP)。 bind()绑定本机IP地址和端口号,listen()启动监听等待客户端发送的请求。至此服务端建立完成。

2)创建服务端socket对象。根据服务端IP地址和端口号试图连接服务端socket端。

3)服务端监听接收accept()到客户端发送的请求,建立与客户端的连接connect()

4)连接建立后,客户端可以发送send()数据到socket对象中,服务端可以接收recv()到客户端发送的数据

5)服务端处理数据后,可以向socket对象返回一个send()处理结果,客户端读取recv()到这个返回结

6)客户端关闭close()连接,客户端释放当前占用的客户端端口号

7)服务端收到客户端关闭消息后,关闭与客户端的连接

socket通信流程.png
05:socket常用方法

1)概述:又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

2)方法分类:服务端套接字、客户端套接字、公共用途套接字

①服务端:bind、listen、accept

②客户端:connet

③公共端:recv、send、sendall、close

3)注意事项:socket进入阻塞状态,即 accept()方法一直等到客户端返回连接信息后才返回,开始接收下一个客户端连接请求

06:服务端与客户端的简单通信

发送数据:通过bytes类型进行传输,需要通过bytes(sendData)转换

接收数据:通过str类型接收,需要通过str(client_data)转换

accept():接受并建立与客户端的连接,程序在此处开始阻塞,只有到客户端连接起来。

#服务端代码
import socket
sk=socket.socket()#创建服务端socket对象
ip_port=('127.0.0.1',13008)
sk.bind(ip_port)#绑定IP地址和端口号
sk.listen(5)#开始监听是否有请求:同时最多允许有5个连接
print('等待客户端的连接')#释放信号
coon,addr=sk.accept()#连接成功后会返回一个新的套接字和客户端地址
print('客户端新的连接:',addr)

client_data=coon.recv(1024)#接收数据:一次性接收1024字节
print(str(client_data,encoding='utf8'))
sendData=input('请输入>>>')

coon.sendall(bytes(sendData,encoding='utf8'))#发送数据
coon.close()#关闭资源
sk.close()
#客户端代码
import socket
sk=socket.socket()#创建客户端socket对象
ip_port=('127.0.0.1',13008)
sk.connect(ip_port)#发起连接

sendData=input('请输入>>>')
sk.sendall(bytes(sendData,encoding='utf8'))#发送数据:通过bytes类型进行传输
sever_data=sk.recv(1024)#接收数据:一次性接收1024字节
print(str(sever_data,encoding='utf8'))#接收数据:通过str类型来接收
sk.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 一: 网络各个协议:TCP/IP、SOCKET、HTTP 网络七层由下往上分别为物理层、数据链路层、网络层、传输层...
    iYeso阅读 1,431评论 0 13
  • OSI七层模型 我们一般使用的网络数据传输由下而上共有七层,分别为物理层、数据链路层、网络层、传输层、会话层、表示...
    泥孩儿0107阅读 803评论 0 2
  • OSI 七层模型 我们一般使用的网络数据传输由下而上共有七层,分别为物理层、数据链路层、网络层、传输层、会话层、表...
    超人_22阅读 487评论 0 0
  • 纠结,疑心,自卑,都是病。
    莫染尘阅读 187评论 0 0
  • 最近常常有一种感觉:我快坚持不下去了,我心有余而力不足了,我是不是该放弃了?我...... 说实话的确挺折磨人的,...
    安秀梁潇方阅读 757评论 0 5