传输模型,网络层次划分,三次握手,四次挥手,IP与端口,套接字socket
了解套接字之前,需要先了解基本的传输模型

其次,还需要了解网络的七层划分和四层结构

在python中,数据链路层相当于硬件层,python不需要了解,只用在传输层进行学习就足够了
其中,传输层分为TCP传输协议和UDP协议,TCP协议相当于打电话,是可靠传输,但是UDP的传输是不可靠的,就像发短信,
当短信发出,可能会出现时间的混乱,可能会出现发送失败的情况,是不可靠的。
需要提前明白的是:
作为python开发,都是在应用层的HTTP之上进行开发的,而HTTP协议是基于TCP协议之上的
python网络编程,其最底层,就在传输层,再往下,python是做不了的
还需要了解的,关于TCP的连接
建立连接(三次握手)
数据传输
断开连接(四次挥手)
1. 建立连接(三次握手)

客户端向服务器发起请求连接的包(一次),当服务器接收的请求,就会返回一个同意连接的包(第二次),
在客户端就会建立连接,然后向服务器发送已经建立连接的信息(三次),服务器收到客户端成功连接的信息,
就会正式开始连接
【第三次是为了确认,假设如果客户端网络不好,第一次请求由于网络延时,由于长时间的等待
客户发起了第二次请求,完成了三次握手后,第一次请求连接的包发送到了服务器,服务器向客户端发起同意连接,
但是并没有收到客户端的成功连接信息,服务器就不会建立连接,从而达到网资源的不浪费】
2. 数据传输

数据的传输,客户端发起请求,服务器发起响应,完全按照一发一收,一收一发
3.断开连接(四次挥手)

客户端向服务器发起完成(出动关闭)请求(第一次),服务器收到请求返回同意请求(第二次),但此时并没有完全关闭,还会有一段等待的时间,
服务器会在会这短时间将未传输完成的数据传输完毕,当完成全部传输,就会向客户端发起关闭请求(第三次),客户端收到以后,会返回确认信息(第四次),
这时服务器就会关闭,客户端会也会等待一段时间,然后关闭。
【第四次还是为了确认】
通信定位的流程
1. 先找IP

IP地址确定用户,127.0.0.1表示本地IP,0.0.0.0表示任意访问 最大到255.255.255.255
2. 再找端口

端口从0到65535,0~1023都是一些专有特殊端口,不能使用。1024~65535之间的是动态端口,可以随意使用(也有特殊的)。
其中,一些特殊的,比如80表示HTTP,22表示ssh,21FTP,3306表示Mysql,6379表示redis,27017表示MongoDB
最后学会使用套接字socket创建服务器和客服端
创建一个服务器端口
import socket
server = socket.socket()
server.bind(("", 9999)) # 元组
server.listen(3) # python3.6以后才支持的监听最大量操作
conn,addr = server.accept() # 取conn建立对等连接
while True:
data = conn.recv(1024)
if not data:
break
print(data.decode())
conn.send(data) #原数据返回
conn.close()
server.close() #关闭
建立一个客户端:
import socket
client = socket.socket()
client.connect(('127.0.0.1', 9999)) #本地IP
while True:
data = bytes(input('>>>'), encoding='utf-8')
if not data:
break
client.send(data) # 发送消息
re_data = client.recv(1024)
print('回执消息:', re_data)
client.close()
先运行服务器,再运行客户端,就可以向服务器发送信息,并接收到服务器回执的相同的消息
传输模型,网络层次划分,三次握手,四次挥手,IP与端口,套接字socket的更多相关文章
- [转]Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解
一.Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手. 注:以下说明最好能结合”图:T ...
- Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)
Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: ...
- 网络 TCP三次握手,四次挥手详解
三次握手,四次挥手可以说是炙手可热的面试题了,来看看它究竟长什么样子吧! 我们先把流程图贴上来 : 为什么这么复杂? 因为TCP是可靠性传输. 确认可靠传输的前提: TCP连接管理机制 用TCP首部 ...
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- 网络模型+三次握手+四次挥手+DNS+HTTPS
网络模型+三次握手+四次挥手+DNS+HTTPS 这篇文章十分精华,所以整理一下: 一.网络模型 OSI七层模型,和TCP/IP五层模型(更为普遍) TCP/IP 协议集: 二.TCP协议(传输层)建 ...
- 救救孩子吧,到现在还搞不懂TCP的三次握手四次挥手
本文在个人技术博客同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 前几天发了一个朋友圈,发现暗恋已久的女生给我点了个赞,于是我当晚辗转反侧.彻 ...
- TCP/IP三次握手四次挥手
本文通过图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图所示,给出了TCP通信过程的示意图. TCP 三次握手四次挥手 主要包括三部 ...
- TCP三次握手四次挥手,通俗易懂版
三次握手四次挥手 三次握手 其实很好理解,三次握手就是保证双手都有发送和接受的能力.那么最少三次才能验证完成 即----> 客户端发送---服务端收到----服务端发送-- 1.客户端发送 -- ...
- TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP ...
- [na]TCP的三次握手四次挥手/SYN泛洪
1.TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占32位, ...
随机推荐
- PCB Genesis加邮票孔(线与线)实现算法
一.Genesis加邮票孔(线与线)实现算法 1.鼠标点击位置P点, 2.通过P点求出,垂足2个点:P1C与P2C (两个点即距离2条线段垂直的垂足点) 3.计算P1C到P2C方位角(假设置为变量PA ...
- 机器人走迷宫(dfs)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1590 #include <stdio.h ...
- js开发规范,在php上也适用
本篇主要介绍JS的命名规范.注释规范以及框架开发的一些问题. 目录 1. 命名规范:介绍变量.函数.常量.构造函数.类的成员等等的命名规范 2. 注释规范:介绍单行注释.多行注释以及函数注释 3. 框 ...
- codevs1688 求逆序对(权值线段树)
1688 求逆序对 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给定一个序列a1,a2,…, ...
- 浅谈JavaScript中的cookie
什么是cookie?简单来说,cookie就是网站服务器存放在我们计算机上的一小段(一般大小不超过4KB)用来识别和记录用户的个人信息的文本.HTTP协议是一种没有“状态”的传输协议,也就是说,服务器 ...
- Android Gradle 学习笔记(七):Android Gradle 插件
我们知道Android Gradle其实就是一个Gradle的一个第三方插件,它是由Google的Android团队开发的,基于Gradle构建的,和Android Studio完美搭配.相比于旧的构 ...
- .net core 下Web API 技术栈
API文档工具:swagger https://www.cnblogs.com/suxinlcq/p/6757556.html https://www.cnblogs.com/danvic712/p/ ...
- B - Substrings Sort
Problem description You are given nn strings. Each string consists of lowercase English letters. Rea ...
- 如何使windows系统ping通VMware下面的linux系统
引用http://www.linuxidc.com/Linux/2012-11/73749p2.htm 很多人在开始接触Linux或者是嵌入式开发的时候都会遇到一个难题,就是如何在Linux下ping ...
- ViewPager循环滚动
一.先写个适配器 public class MyPagerAdapter extends PagerAdapter { /** * 上下文 */ private Context context; /* ...