网络编程

网络目的:数据传输

 

OSI七层模型:

应用层:提供用户服务,具体的内容由特定的程序规定

表示层:提供数据的加密和压缩优化

会话层:确定建立应用连接,选择传输服务

传输层:提供数据传输服务,进行流量控制

网络层:路由选择,网络互联

链路层:提供链路交换,具体消息的发送

物理层:物理硬件,接口,网卡的规定

 

四层:

应用层

传输层

网络层

物理链路层

 

五层:(TCP/IP模型)

应用层

传输层

网络层

链路层

物理层

 

OSI模型优点:将功能分开,降低网络传输中的耦合度。使开发流程更加清晰,每部分各司其职

 

高内聚:每个模块功能尽量单一,不会多个功能掺杂

低耦合:尽量降低每个模块之间的关联性

 

要求:

能够顺序说出七层模型、五层模型

知道每一层干什么事情

理解消息传输流程

 

网络协议:在网络通信中协议各方必须遵守的规定。如建立什么连接,消息结构如何解析等

 

网络相关概念

网络主机:在网络上确定一台主机

本地使用:'localhost'  127.0.0.1

网络地址:'0.0.0.0'  '172.60.50.54'(本机网络IP)

 

 

IP地址

网络上确定一台主机的地址

IPv4:点分十进制  比如192.168.1.3  范围0-255

IPv6:128位

 

特殊IP

127.0.0.1  本地测试IP

0.0.0.0  自动使用本地可用网卡IP

192.168.1.0  代表当前网段

192.168.1.1  通常为网关地址

192.168.1.255  广播地址

 

 

域名:网络服务器地址在网络上的名称

端口号:端口号是地址的一部分,在一个系统中每个网络应用监听不同的端口,以获取对应端口传递的信息

端口取值范围:1-65535

1-255  是通用端口(牛逼的程序占用)

256-1023  系统端口

1024-65535  自用端口

 

获取应用程序的端口

import socket

socket.getservbyname("mysql")    #3306

socket.getservbyname("ssh")        #22

 

 

传输层服务

一、面向连接的传输服务  =》  tcp协议

传输特征:

 

提供可靠的数据传输

可靠性:数据在传输中,无失序、无差错、无丢失、无重复

 

在数据传输前和传输结束后,需要建立连接和断开连接

三次握手:连接过程

(1、客户端向服务器发送连接请求)

(2、服务器接收到请求进行确认,返回确认报文)

(3、客户端收到服务器回复最终确认连接)

四次挥手:断开过程

(1、主动方发送报文,告知被动方要断开连接)

(2、被动方回复报文,表示已经接收到请求,准备断开)

(3、被动方再次发送报文,表示准备处理就绪,可以断开)

(4、主动方发送确认报文,断开连接)

 

 适用于传输较大的内容或文件,网络良好,需要保证传输可靠性的情况

例:聊天信息  文件的上传下载  邮件处理  网页获取……

 

二、面向无连接的传输服务  =》  udp协议

传输特点:

不保证传输的可靠性;没有连接和断开的过程;数据的首发比较自由

 

适用情况:网络情况可能产生丢包,对传输可靠性要求低

例:网络视频  群聊  广播……

 

 

要求:

1、理解三次握手和四次挥手,能够描述过程

2、知道tcp传输和udp传输的区别

 

 

socket套接字编程

目的:通过编程语言提供的套接字编程接口,可以更简单的完成基于tcp和udp的编程

套接字:完成上述目标的一种编程手段

 

套接字类别

1、流式套接字(SOCK_STREAM):传输层基于tcp的协议通信

丨可靠的传输 丨 tcp传输 丨 流式套接字丨

2、数据报套接字(SOCK_DGRAM):传输层基于udp协议传输

丨面向无连接不可靠的传输 丨 udp传输 丨 数据报套接字丨

 

 

tcp粘包

产生原因:

1、tcp传输以字节流的方式发送消息,消息之间没有边界

2、发送比接收的速度快

影响:对每次发送的内容是一个独立的意思,需要单独识别

如何处理:

1、每次发送后加一个结尾标志

2、发送一个数据结构

3、每次发送有一个间隔

posted @ 2019-04-20 14:56  此生执念  阅读(87)  评论(0编辑  收藏  举报