一、 实体层
"实体层",它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
二、 链路层
-
单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义? 这就是"链接层"的功能,它在"实体层"的上方,确定了0和1的分组方式
-
以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示
- 以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据
- 太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包
- 早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做"以太网"(Ethernet)的协议,占据了主导地位。
三、网络层
- 如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。
- 联网是无数子网络共同组成的一个巨型网络,很像想象上海和洛杉矶的电脑会在同一个子网络,这几乎是不可能的。
- "网络层"的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。
- 网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。
- 如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包)
- 规定网络地址的协议,叫做IP协议。广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成
- 联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。
- 所谓"子网掩码",就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。
- IP数据包也分为"标头"和"数据"两个部分,标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。
- mac地址:通过地址解析协议(ARP)获得,一个子网中直接通过ARP,非一个子网,交给网关处理
四、传输层
- 需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据
- 传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。
- Unix系统就把主机+端口,叫做"套接字"(socket),基于它进行网络应用程序的开发
- UDP数据包,也是由"标头"和"数据"两部分组成。标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分
- 了解决这个问题,提高网络可靠性,TCP协议就诞生了,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。
五、应用层
"应用层"的作用,就是规定应用程序的数据格式。 举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"
- 正则表达式应用
- 常用的规则链接:https://www.cnblogs.com/fozero/p/7868687.html
-
正则表达式:正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
需求:检查一个字符串 是全数字组成 是/不是
1.遍历
转换为char[]
2.判断(如何判断)
类型的对比 (转换为数字,如果有字母-报错-捕获异常)
需求:验证邮箱的格式?
qq号码@qq.com
163 雅虎 新浪
1.正则的规则
^[0-9]*$:验证数字
^[\u4e00-\u9fa5]{0,}$:验证全是汉字
2.java代码中如何使用
有专门的一个类 Pattern
public boolean matches(String regex)
regex - 用来匹配此字符串的正则表达式
返回:
当且仅当此字符串匹配给定的正则表达式时,返回 true
3.使用场景
一般用于注册的信息(密码,账号格式,邮箱,手机号,身份证号等)验证
- 计算机网络的应用场景(了解)
-
- 网购(。。。) 看直播 网络游戏 看新闻 网络聊天
- 网络在改变生活
-
-
3.网络编程相关术语(了解)
iP:概念:所谓IP地址就是给每个连接在互联网上的主机分配的一个32位地址;IP是互联网上的每一台计算机都有得一个唯一表示自己的标记。
端口:如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)
简单的说:一个电脑上的应用程序都绑定了一个对应的编号(端口),通过IP可以定位到指定的主机(电脑),再加上端口就可以定位到指定的程序了。
URL:URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源如一个简单的网页。
一般由:协议名,资源所在主机,端口,资源名等部分组成;
如:http://itsource.cn:80/class_info/java_jichu.html
URLEncoder与URLDecoder的使用场景
- TCP协议概念:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于 字节流 的运输层(Transport layer)通信协议;当客户和服务器彼此交互数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
-
UDP协议概念: 用户数据报协议,是一个简单的面向数据报的运输层协议,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证他们能到达目的。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,并且没有超时重发机制,故而传输速度很快;
-
TCP的所有操作必须建立可靠的连接,这样会浪费很大的性能,为此UDP这种不可靠的连接出现。
- UDP开发中使用DatagramPacket包装一条要发送的信息,之后使用DatagramSocket完成发送操作,也能够实现在两个终端之间传输数据。
- TCP与UDP的区别
- 基于连接(TCP)与无连接(UDP) ;
- 对系统资源的要求(TCP较多,UDP少) ;
- UDP程序结构较简单 ;
- 流模式(TCP)与数据报模式(UDP) ;
- TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证;
-
与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突发性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。
TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。