网络编程
网络编程:指的是编写基于网络的应用程序
学习——目的:开发出一款可以利用网络来传输数据的应用程序
网:由多个节点相互连接组成 比如 : 渔网 蜘蛛网
什么是互联网:由多台计算机通过某种介质相互连接而成的,之所以存在是为了让信息共享
c/s结构:
建立网络至少需要两台计算机,然后使用网络来传输信息
1):网络必须联通
2):在需要访问数据一方 必须安装用于访问数据的应用程序,被称之为客户端应用程序(client)
在需要提供数据的一方 必须安装用于共享数据的应用程序,被称之为服务端应用程序(server)
我们把以上部分简写为c/s: 比如: qq 就是客户端 服务器就在腾讯公司
b/s: eg: 淘宝网 该结构下通常传输都是HTML文本
我们学习网络编程的最终目的:编写出一个基于c./s结构的应用程序
通讯协议:
要通讯必备的两个条件:1):物理传播介质(光纤,无线电波)
2):通讯协议
通讯协议:是由发送方与接收方共同商定的一套协议
协议的目的:为了让双方能够正确解析数据 eg: 国内通讯 :双放说普通话 国际通讯:双方用英语
早些年 每个公司都有自己的一套通讯协议, 不同品牌的电脑相互间连不了网 ,于是国际标准组织提出了 OSI (一堆协议)
OSI七层模型:(应用层,表示层,会话层,传输层,网络层,数据链路层,物理层)
其中应用层,表示层与会话层都属于应用程序层,所以和为应用层
由于两台计算机想要通讯
一:物理层: 通过物理介质建立物理连接 发送的是 高低电频 。由于两台计算机想要通讯所以有了物理层
二:数据链路层: 以以太协议 工作在 数据链路层中 由于是单纯的二进制,无法理解 所以必须明确一次收几个 ,每一段二进制的含义 所以引出数据链路层
1):数据如何分组:一组电信号构成一个数据包称之为帧,每次发送一个数据帧
数据帧包含 head(头):包含 原地址(6),目标地址(6),802标签(4)+以太类型(2 ) 共 18
data(内容):最少 46 最多 1500
没帧最大1518,超过将分片
2) :MAC地址:每台计算机要联网都要有网卡,每个网卡必然具备一个全球唯一的MAC地址,所以可以定位到任意一台计算机
有了链路层理论上全世界的计算机都能连到同一个网络,但是我们不可能把所有计算机设备连到同一个交换机,而且同一网络的计算机同时发送广播,容易形成广播风暴
三:网络层: 以ip协议 工作在网络层
ip协议规定:每一台计算机要联网都必须分配一个 ip地址 ip为逻辑地址 不是固定的 可能会变化
ip地址的格式:有4段3位的十进制数组成 范围在 0.0.0-255.255.255
ip地址中前三段是网络后,用于表示所在局域网;后一段是主机号,用于表示这个主机在局域网中的位置。通过网络号可以定位到某一个局域网,再通过主机号定位某一个计算机,这样一来就可以通过ip定位到全球任意一台计算机
ip地址是在mac地址的基础上加入的网络地址概念,有了它可以缩小广播范围
四:传输层:以 TCP/UCP 协议工作在传输在传输层
传输层要求每一个应用程序绑定一个端口号,端口号是整数 取值范围 0-65536 0-1024是系统保留的 不建议用 端口号不能重复 至此 ip+端口号 就可以定位到全球某一台电脑上的某一个应用程序
TCP:传输控制协议
可靠传输协议, 如何保障可靠,在发生完数据之后,必须等待接收方返回回复消息,该数据才算发送成功,如果对方在一段时间内没有返回,会再次发送数据,超限制次数,将判定为链接丢失。
1.要发送数据必须先建立链接 简单的说就是找一条可以到达对方的路 ;
2.要保证数据传输室可靠 一定要保证这传输路径是可用的
3.建立链接需要三次握手,三次握手是为了确定传输可用;但是并不能保证后续传输可靠 所以TCP协议在传输数据时 每一个数据段segment都需要确认信息
4.断开链接需要四次挥手,四次挥手是保证双方数据传输完毕 , 为什么需要多一次,有可能一段传输结束 另一边还没结束
优点:保证传输可靠,数据完整
缺点:因为需要传输确认信息,所以对网络消耗较大,效率相对较低
应用场景:重要数据,在线支付,文字信息
UDP:协议用户数据报协议
不可靠传输协议,UDP只管发送 不管对方是否收到
优点:传输效率比TCP高
缺点:传输不可靠
应用场景:对速度要求高 ,对完整性要求较低的情况下用 比如 : 频通通话, 语音聊天 对战游戏 多是UDP 你卡了你就卡吧 别人正常玩
原文:https://www.cnblogs.com/wyf20190411-/p/10931401.html