python之网络编程之OSI七层模型与tcp/udp三次握手四次挥手

1.客户端/服务端架构

    1.硬件c/s架构

     2.软件c/s架构 (b/s)

            互联网中处处是c/s架构

            客户端client《-----基于网络通信------》 server服务器

            浏览器客户端 browser《---基于网络通信-----》server

            浏览器是客户端(B/S架构也是C/S架构的一种)

       server端必须满足的条件:

            1.稳定运行(网络、硬件、操作系统、服务端应用软件),对外提供服务  (运维负责网络、硬件、操作系统 软件出现bug可以先甩锅给运维)

            2.服务端必须绑定一个固定的地址

 

2.什么是互联网

    两大要素

    1.底层的物理连接介质,是为了通信铺好道路

    2.一套统一的通信标准-----互联网通信协议

    如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准,

这些标准称之为互联网协议。

互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite)

互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

 

3.osi七层模型

 
 

tcp/ip五层模型讲解

 

1.物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

2.数据链路层:

    数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思

    数据链路层的功能:定义了电信号的分组方式

   以太网协议(ethernet):

            ethernet规定:

                    一组电信号构成一个数据包,叫做帧

                    每以数据帧分为:报头head和数据data两部分

                        head包含:(固定18个字节)

                            发送者/源地址,6个字节

                            接受者/目标地址,6个人字节

                            数据类型,6个字节

                        data包含:(最短46-1500字节)

                            head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

             

            mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,

                            长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)   

            广播:有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)

                        ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

3.网络层:

    网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

            ip协议:规定网络地址的协议,2进制表示,范围0.0.0.0-255.255.255.255

                          IP地址分为两部分:网络部分:标识子网

                                                       主机部分:标识主机

           子网掩码:表示网络特性的一个参数 ,用来判断两个IP地址是否同一网段  

            

比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,

172.16.10.1:10101100.00010000.00001010.000000001

255255.255.255.0:11111111.11111111.11111111.00000000

AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

 

172.16.10.2:10101100.00010000.00001010.000000010

255255.255.255.0:11111111.11111111.11111111.00000000

AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0

结果都是172.16.10.0,因此它们在同一个子网络。

    ip数据包

        ip数据包分为head和data部分,直接放入以太网data部分

            head:长度为20到60字节

            data:最长为65515字节

      arp协议功能:广播的方式发送数据包,获取目标主机mac地址

        如果目标主机不在同一网段的,那arp获取的网关地址

        

协议工作方式:每台主机ip都是已知的

例如:主机172.16.10.10/24访问172.16.10.11/24

一:首先通过ip地址和子网掩码区分出自己所处的子网

场景	数据包地址
同一子网	目标主机mac,目标主机ip
不同子网	网关mac,目标主机ip
 

二:分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)

源mac	        目标mac	        源ip	                目标ip	                        数据部分
发送端主机	发送端mac	FF:FF:FF:FF:FF:FF	172.16.10.10/24	172.16.10.11/24	数据
 

 

三:这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac

4传输层

    传输层功能:建立端口到端口的通信,标识主机上的应用程序,端口即应用程序与网卡管理绑定

            端口范围:0-65535,0-1023为系统占用端口

    tcp协议:可靠传输,tcp数据包没有长度限制,理论上可以无限长,但为了保证网络的效率,通常tcp数据包的长度不会超过

                    ip数据包的长度,。以确保单个tcp数据包不必再分割

    udp协议:不可靠传输,报头部分只有8字节,总长度不超过65535字节

            tcp三次握手,四次挥手

             

      三次握手:

            c客户端 s服务端

            1.客户端进入(syn-sent)请求状态,发送syn seq=x信息到s 。s此时处于(listen)监听,收到后进入(syn_rcvd)确认状态,并发送请求和回复(syn seq=y ack=x+1) 信息给c

            2.c收到后进入(enstablished)建立状态,此时c链接s通道建立成功,并回复(ack=y+1)回复信息给s

            3.s收到信息后进入(enstablished)建立状态,此时s链接c通道建立成功

     四次挥手:

            s服务器  c客户端

            1.服务器进入(fin_wait_1)主动断开模式并发送fin seq=x+2 ack=y+1信息给c ,c接收到进入close_wait(等待关闭状态)。并回复ack=x+3给s

            2.s收到后进入(fin_wait_2)被动断开模式,此时s到c的链接通道断开,等待c数据传输入完毕后,发起c到s断开链接请求

        3.c数据传输完毕后,进入(last_wait)最后请求关闭状态,并发送fin seq=y+1信息给s ,s收到后进入(time_wait)时间等待状态,并发送ack=y+2给c

        4.c收到信息后,c到s的链接通道关闭

5.应用层:规定应用程序的数据格式。

 

 

半连接池:占用内存空间,存储客户端同一时间发送的链接请求数(是一种排队机制)

总结:

    标识地址的方式

        mac找局域网的主机

        ip+mac就能标识全世界范围内独一无二的主机

        ip+mac+port就能标识全世界范围内独一无二的基于网络通信的应用软件

        url地址:标识全世界范围内独一无二的一个资源

 

 

 

 

转载于:https://www.cnblogs.com/Marcki/p/10111937.html

网络编程:osi七层协议、三次握手四次挥手、socket套接字编程 文章目录4.15一、 客户端/服务器架构二、互联网的本质就是一系列的网络协议三、osi七层协议 4.15 一、 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 学习网络编程的目的是为了开发一个CS架构或者BS架构的软件 Client- 阅读详情

相关推荐

网络协议相关面试题

s

qq_42828949的博客 6545

Python入门【TCP建立连接的三次握手、 TCP断开连接的四次挥手、套接字编程实战、 TCP编程的实现、TCP双向持续通信】(二十七)

Python入门【TCP建立连接的三次握手、 TCP断开连接的四次挥手、套接字编程实战、 TCP编程的实现、TCP双向持续通信】(二十七)

abc19991119的博客 2201

[cryoEM] cryoSPARC简介

cryoSPARC系统结构概述 cryoSPARC是一个后端和前端高性能计算软件系统,为单颗粒冷冻电镜提供数据处理和图像分析能力,以及丰富的基于浏览器的用户截面和命令行工具。 Master-worker模式 系统基于主用户模式。 主进程(web应用,核心应用程序和MongoDB数据库)一起在主节点上运行。主节点需要相对轻量级的资源(2+ CPU< 16GB+ RAM)。 工作程序进程可以在具有GPU的任何可用节点上生成,负责所有实际计算和数据处理,并由主节点调度。注意:同一节点可以同时充当主节点和辅

进阶中的程序员吃吃的博客 7796

python:Socket编程(三):tcp三次握手四次挥手(简单举例编程:服务器、客户端)

举例:服务端程序: # socket简单编写:服务端 客户端 #服务端 import socket # 导入 socket模块 serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # socket.AF_INET :表示基于网络 # socket.SOCK_STREAM:表示基于TCP协议 serv.bind(("12...

白骨梦儿 2511

芯片低功耗设计的两种常用EDA流程

如题。

EricWZY2008的专栏 5556

基于51单片机的贪吃蛇游戏设计

本科时候做的一个课程作业,自己打一个很简易的电路,比较有意思且易上手,故将之记录下来。(全套的仿真及代码,演示视频,课程报告以及PPT展示上传在优快云下载区) 一. 实验目的 (1) 通过对C51语言的理解,编写程序实现对贪吃蛇的有效控制; (2) 通过对51单片机硬件的学习,学会运用面包板,独立按键、点阵屏等,完成对完整电路的搭建过程; (3) 通过对Proteus仿真软件的学习,实现基于STC89C52单片机的8*8点阵贪吃蛇的硬件电路仿真。 二. 实验介绍 贪吃蛇是一款经典小游戏,其游戏的规则是:玩

山山の十三先生 2万+

Maven打包全解析:从普通Jar到Spring Boot Fat Jar的实战指南

在Java项目构建与部署中,Jar包是代码交付的核心载体。其打包方式直接决定了应用的部署形态和运行效率。从原理上讲,Maven通过不同的插件机制,实现了多种打包策略:普通Jar仅包含项目编译后的类文件,作为类库供其他项目依赖;可执行Jar(Fat Jar)则通过嵌套或融合技术将项目及其所有依赖打包为一个独立运行单元,实现了环境一致性;而依赖分离式Jar则将业务代码与第三方库分离,优化了容器化部署时的镜像构建效率。这些技术为不同应用场景提供了灵活选择:公共库开发需用普通Jar保证依赖纯净,Spring Boo

weixin_34417183的博客 442

2021年秋招面经分享·字节跳动【芯片工程师-系统架构】

前言 如果想参考本人背景情况的可见这篇概述 ============================ 正文开始 ============================== 【时间线】 7.29 字节一面 8.4 字节二面 8.11 字节三面 PS:红字表示我当时没答出来的问题,蓝字表示面试官的解答。 面经分享 一面·技术面【1小时5分钟】   面试官京腔重,聊high了所以没时间撕代码了,但是华为应该不会这样。 自我介绍; 介绍一下APB; APB中3个状态的跳转是怎么跳转的; AXI中va

qq_43132308的博客 5611

python之网络编程的TCP三次握手

TCP三次握手 所谓的三次握手(three-way handshake),即建立TCP连接,也就是指在建立一个TCP连接时,需要客户端和服务端总共发送3个数据包,来确认连接建立,在socket中,这个过程由客户端执行connect()来触发。 首先我们先来看一下TCP的包结构 源端口:发起端口 目的端口:发送到的端口 序号:Sequence number(顺序号码) 确认号:Acknowledge...

weixin_43178103的博客 863

C#实践项目1

需求: 在CAD内实现两个坐标系的转换。 转换方式为文件内的所有图形从一个坐标系下的坐标,转换到另一个坐标系下的坐标。 进行坐标转换后,仅仅是坐标发生改变,图层、样式等等不会发生变化。

weixin_51182789的博客 5323

python零基础入门到精通,python入门到精通教程

坚持到了这儿,恭喜你,表示你有做开发的潜力,其实我想说的上面的内容还是刚刚开始,刚开始大家不需要多么精通了解这些内容,除了Python方面的知识,每个部分掌握一点儿能进行基本开发就好,主要是不断练习,让自己跳出「舒适区」,进入「学习区」,但是又不进入「恐慌区」,不断给自己「喂招」。上述这份完整版的Python全套学习资料已经上传优快云官方,朋友们如果需要可以扫描下方二维码免费获取【保证100%免费】

YYmmsss的博客 3426

【Python--网络编程之TCP三次握手】

使用Python网络编程实现一个TCP三次握手

qq_45832651的博客 1820

Anomalib实战之一:自定义数据集

Anomalib支持多种图像扩展名,如".jpg"、“.jpeg”、“.png”、“.ppm”、“.bmp”、“.pgm”、“.tif”、“.tiff"和”.webp"。可以从具有任何这些扩展名的图像中收集数据集。

mingo_敏 6233

Python之网络编程

网络编程 1. C/S B/S架构 C : client 客户端 B : Browser 浏览器 S : server 服务端 C/S 客服端与服务器之间的架构: QQ,微信,游戏 ​ 优点 : 安全性高,个性化设置,功能去全面 ​ 缺点 : 开发成本高 , 维护成本高(app),面向的客户固定 B/S架构: 浏览器与服务器之间的架构 , 输入C/S架构 最近几年比较流行的特殊的C/S架构 ​ 优...

qq_30075075的博客 1196

【Bug已解决】codex: conversation context window exceeded / Token limit reached — CodeX CLI 上下文窗口超限解决方案

CodeX CLI 上下文窗口超限(context_length_exceeded)的解决方案,含开新会话、更大窗口模型、精简提示与限制工具输出。

博客 4180

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python网络编程基础

pyhton中内置了socket模块可以进行局域网之间数据传输。

weixin_72163837的博客 1084

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机网络深度解析:从 OSI 模型到 TCP/IP 实战,掌握现代网络通信核心原理

在当今高度数字化的时代,无论是开发一个 Web 应用、部署微服务架构,还是调试一次“奇怪”的 API 超时问题,背后都离不开对计算机网络的深刻理解。很多开发者将网络视为“黑盒”——只要能fetch()或就行。然而,当遇到 DNS 解析失败、TCP 连接超时、TLS 握手错误或 HTTP/2 多路复用异常时,缺乏网络知识将成为你排查问题的最大障碍。本文不仅系统梳理计算机网络的核心理论(如 OSI 与 TCP/IP 模型、IP/TCP/UDP 协议机制),更结合。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 533

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python底层网络交互模块_网络和并发编程(面试题)

1,python的底层网络交互模块有哪些?答案:socket, urllib,urllib3 , requests, grab, pycurl2,简述OSI七层模型以及列举各层协议应用层:HTTP,FTP,NFS表示层:Telnet,SNMP会话层:SMTP,DNS传输层:TCP,UDP网络层:IP,ICMP,ARP,数据链路层:Ethernet,PPP,PDN,SLIP,FDDI物理层:IEEE...

weixin_39865625的博客 551

网络编程

一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构   互联网中处处是C/S架构   如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)   腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二 osi七层 引子: 须...

weixin_30677475的博客 88

python网络编程

python网络编程

weixin_44992737的博客 1万+

python基础——网络编程

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。

zyz博客 1397

python网络编程,OSI 7层模型、UDP和TCP协议、TCP三次握手和四次挥手、粘包、阻塞和非阻塞、IO多路复用

epoll同样只告知那些就绪的文件描述符,而且当我们调用epoll_wait()获得就绪文件描述符时,返回的不是实际的描述符,而是一个代表就绪描述符数量的值,你只需要去epoll指定的一个数组中依次取得相应数量的文件描述符即可,这里也使用了内存映射(mmap)技术,这样便彻底省掉了这些文件描述符在系统调用时复制的开销。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。

Python 266

Python 网络编程:TCP 与 UDP 协议详解及实战代码

在万物互联的时代,网络编程已成为开发者必备的核心技能。Python 凭借其简洁优雅的语法和强大的标准库支持,为网络应用开发提供了高效解决方案。本文将深入剖析 TCP 和 UDP 两大核心传输协议,通过代码实例演示其在 Python 中的具体实现,助力开发者构建稳定可靠的网络应用。

qq_63910171的博客 2371

Python 网络编程之TCP详细讲解

不提供连接的可靠性和流控制,而是专注于尽可能快速地传输数据。适用场景:实时音频和视频传输、在线游戏等。是一种无连接、简单、轻量级的传输层协议。

weixin_48183870的博客 1740
上一篇: python之元类高级应用,自定义元类隐藏属性,三种单例模式
下一篇: scoket(网络编程)
bangwu8607
博客等级 码龄11年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值