目录
3.局域网(Local Area Network LAN)广域网(Wide Area Network WAN)
1.网络基本原理
网络:进程和进程间跨主机(Host)通信。
研究的点:
1.我们本机的进程发送的数据如何走到本机的网卡,并发送。
在我们进程发送数据给网卡,到达网卡之前这一段是操作系统的网络管理模块(也就是网络协议栈)在操作
2.线路上的发送问题
3.
a. 单主机上网卡是如何工作的?
1.填充数据
2.触发发送
(这里我们只需要把内存中的数据拷贝到网卡对应位置,即可实现)
b.网卡如何接收数据?
入口可以认为是转换器,可以把物理数据转换为数字信号
1.接收数据
2.通过中断把控制权给操作系统
3.操作系统把数据搬给进程
无线网卡
都是接受物理数据
c.如果俩个主机是通过网线直接连接,数据如何发送?
d.数据发送出来的数据,是原封不动给到网卡发送吗?
不是,数据需要经过不断地封装之后才会被发送。
封装的过程有很多层次。
有不同的层次去实现网络,现代网络都是分层去讨论。
2.网络的层次
理论层次(不咋用):OSI 7层(了解)
物理层(physical layer):解决在物理介质中传输的问题(在网线、电磁波中如何传播)
数据链路层(data link layer):用来做局域网
网络层(network layer):解决跨局域网的通信问题(路由问题)
1,2,3解决主机和主机的通信问题
传输层(transmission layer):把数据具体分给哪一个进程
会话、表示、应用层(统一看作应用层即可)
应用层(application layer)
实际层次:TCP/IP 5层(重要)
要求记住层次、层次之间的前后关系,以及每层的职责
TCP/IP称为4层是物理层不讨论
3.局域网(Local Area Network LAN)广域网(Wide Area Network WAN)
局域网:被路由器网线接起来的设备(被路由器分割形成的网络) 国家
广域网:通过路由器把局域网组合形成广域网 世界
针对LAN,主机之间可以直接进行通信
组网:
1.主机直接连接主机
2.多主机进行组网:星型、总线型、环形。
依赖于网络设备的存在:集线器(hub)、交换机(switch)
集线器:把A发送的数据同时发给B、C、D
但是A发给D,BCD都会收到,所以A发送的数据会封装一些源、目的信息,BC收到发现不是自己,会丢弃(忽略),只有目标主机接收数据。
上面的工作交给数据链路层
数据链路层:解决一个局域网内部的通信问题,建立在物理层可以连接的基础上
而数据链路层有冲突域的问题:冲突域:就是所有主机如果都在说话,就会造成谁也听不清谁说话。
所以进行了冲突避免:一旦发送数据比较多的时候,遇到冲突停止发送,有一个随机时间。
所以hub上尽可能主机连接少一点,集线器(工作在物理层)并不是好的连接方式,于是有了交换机(工作在数据链路层)
交换机(swich):就是战争片里的通讯员
交换机是可以知道数据发送给哪个目标的,只会把数据交给对应的主机
交换机层面有广播域的问题:这个主机中,一个广播域里,一个主机可以向所以主机发送消息,也就是一对多。
路由器Router(工作中网络层)出现:不再局限于局域网,而是跨局域网出现(跨局域网的通信问题,由网络层来解决),这个路由器即属于这个局域网,也属于另一个局域网,就相当于海关一样。
路由:意思就是寻路的问题(从目标到目的地就是有很多条路可以走,你要选一条最合适的路)
传输层:解决进程对进程的通信问题
应用层:再解决了通信问题的情况下,各个业务时具体怎么通信的
总结:
4.逻辑地址、物理地址
Mac地址(数据链路层用):物理地址,一个网卡在出厂时就绑定的地址(网卡的硬件地址,全世界网卡的MAC地址是“绝对唯一的”)
一个12位16进制数,大概16^12次方的地址
IP地址(网络层用):一个网络内部的IP地址,不应该重复(软件地址),可以自己设置。
不在一个局域网内,可能会重复
端口(port):在一个主机内部用来区分不同进程用的(0-65535),在一个进程内部不重复
依赖ip+port
通过ip地址,一定可以唯一地确定网络中的一台主机。
通过port,一定可以确定主机内部的一个进程。
ip+port 唯一确定网络中的一个进程
通信主体A:ip1:port1
通信主体B: ip2 : port2
进程和端口之间的关系:
一个进程可以同时绑定(bind)多个端口,但是一个端口同一时刻,只能属于一个进程
通过端口可以唯一确定一个进程,和程序无关
五元组信息:在TCP/IP协议中,用五元组来标识一个网络通信:1.源ip2.源端口号3.目的ip4.目的端口号5.协议号(一旦提到五元组,就说明在应用层之上在讨论问题)
系统端口号的范围为0-65535,其中:0-1023为知名端口。1024之后的端口可以随意使用。
5.网络的小案例
1.局域网内部的通信(寄快递)
实现了不同层次的通信
左边封装,右边解包、右边要决定交给上一次的哪个协议,称为分用的过程
2.跨局域网的通信(唐僧取经)
6.
特殊的ip地址:
127.* 环回地址:在主机内部一个进程与另一个进程通信。
用于本机环回(loop back)测试,通常是127.0.0.1
协议(protocol):一套标准
通常由三要素组成:
语法:即数据与控制信息的结构或格式(都说普通话)
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。(我是:你说啥 对方:我说了...)
同步:时间实现的顺序的详细说明。定义了何时进行通信,先进什么,后讲什么,讲话的速度,比如采用同步传输还是异步传输。
在TCP往上是用户进程在负责,往下是 操作系统在负责
各层的专业术语:(面试爱考说的专业一点)
封装:
数据链路层:数据帧(frame)
网络层:数据包(packet)
传输层:UDP:报文(datagram)
TCP:段(segment)
应用层:请求-响应模型(一问一答的形式)——>HTTP:请求(Request)、响应(Response)
订阅-推送模型
数据的封装的过程:
数据链路层有很多协议,最常见的是以太网协议,首部和尾部都需要被封装。
网络分布式的架构造成以下的特点:
1.数据在整个通信线路上对于线路中的设备实际上是透明的。(所以可以加密)
2.网络在发送中天生是不可靠的(你保证数据一定能发送给对方)
3.来回的线路并不保证是同一条。
重要的点:
TCP/IP 5层 哪些+职责+主要的设备
LAN内部通信 封装——>解包、分用
跨LAN的西天取经的故事