计算机网络简述应用层协议有哪些,简述计算机网络

简述计算机网络

一、c/s架构和b/s架构

c/s架构:客户端和服务器 eg:QQ、微信

c端-----------------------网络---------------------s端

c端:就是客户端

s端:有固定IP,并且稳定一直在运行,支持高并发

b/s架构:浏览器和服务器 eg:京东、天猫

其实b/s架构的本质也是c/s架构

二、网络协议

什么是网络?

网络就是网络连接介质+网络协议

网络协议

OSI七层协议:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

OSI五层协议:物理层、数据链路层、网络层、传输层、应用层

2.1 物理层

主要是010101的高低压电信号

2.2 数据链路层

通过etherner协议(以太网协议,,定义了以太网的分组方式)把物理层的电信号分组,每一组叫一个数据报/数据帧。

每一数据帧分成报头head和数据data两部分。

| 报头(18字节) | data(46-1500) |

​ 报头(固定18字节):发送者占6位,接收者占6位,数据类型占6位

mac地址 :发送者,接收者地址,就是mac地址,每个网卡都有一个唯一的mac地址,总长度为48位2进制,12位16进制数表示(前六位是厂商编号,后六位是流水线号)

广播:同一个局域网内通信,会出现广播风暴

2.3 网络层

IP:主要有IPV4和IPV6

IPV4:32位2进制,用点分十进制表示 范围为0.0.0.0到255.255.255.255

IPV6:64位2进制

子网掩码:通过子网掩码和IP地址判断两个IP是否处于同一个网段,通过IP地址和子网掩码做按位与运算

IP地址: 172.16.10.1: 10101100.00010000.00001010.000000001

子网掩码: 255.255.255.0: 11111111.11111111.11111111.000000000

按位与运算: 172.16.10.0 10101100.00010000.00001010.000000000

172.16.10.10/24 包含了ip地址和子网掩码

IP地址与mac地址的转换关系

应用arp协议,通过广播发送数据包,获取目标地址的mac地址

mac地址学习:mac地址和ip地址的映射表

-第一次接收到就会在ip/mac映射表中添加一条数据{’172.16.10.11“:ddsadfgegsdgsdg}

任何一种包都由数据头和数据组成

2.4 传输层

TCP协议:面向连接的,可靠地

发送数据,需要响应,所以数据可靠

三次握手

89635eda52d36bb5d4b5721b2231f56c.gif

四次挥手

256b5a4c7da7d22a84e4ebbd1b9402c6.gif

7e4056e5422a79400784196f28a3ba02.gif

362fedf4997dc30ba87468aef844ca5d.gif

addd5b2c98ae62c1db101d177e2e1104.gif

UDP协议:面向非连接的,不可靠地

发送数据,不需要响应,所以数据不可靠

端口

-通过ip+子网掩码确定唯一一台设备

-通过ip+子网掩码唯+端口号确定唯一一个软件

半连接池:实质上是一个队列,先进先出,半连接池不是控制连接数,而是控制连接在中间状态的连接数

2.5应用层

上网流程分析(以访问百度为例):

-在浏览器输入www.baidu.com

-会取DNS服务器通过域名解析成IP地址

-向IP端口号这个地址发送请求,就会访问到百度的服务器

socket

​ 在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信,调用socket就可以直接操作传输层和网络层

三、需求

写一个客户端,实现给服务端发送hello word字符串,写一个服务端,将客户端发送的数据变为大写后返回

#服务器

import socket #导入模块

#SOCK_STREAM表示TCP连接,SOCK_DGRAM表示UDP连接,如果不写参数,默认TCP连接

soc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

soc.bind(('192.168.11.195',8080)) #括号里面是一个元组

soc.listen(5) #处于监听状态,5为半连接池的大小

conn,addr = soc.accept() #等待接收数据,conn就是通路

data = conn.recv(1024) #接收数据,最多1024个字节,1024还可以是其他数字

#发送数据,数据必须是bytes格式 把客户端发来的消息处理好再发送给客户端,,upper()将数据变大写

conn.send(data.upper())

#把客户端发来的消息处理好打印出来,给自己看(客户端发来的消息 b'hello world')

print('客户端发来的消息',data)

conn.close() #断开连接

soc.close() #关闭连接

#客户端

import socket

soc = socket.socket() #创建一个socket对象

soc.connect(('192.168.11.195',8080)) #连接服务端

soc.send(b'hello world') #给服务器发送数据,数据必须是bytes格式

data = soc.recv(1024) #接收数据,最大1024字节

#把客户端发来的消息处理好打印出来,给自己看(服务器发来的消息 b'HELLO WORLD')

print('服务器发来的消息',data)

soc.close() #关闭连接

标签:soc,socket,mac,计算机网络,简述,地址,子网掩码,客户端

来源: https://www.cnblogs.com/yanjiayi098-001/p/11469248.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值