Linux知识心得06 网络剩余部分

今日内容:

TCP(可靠) & UDP(不可靠)

# tcp
# 	1、通信之前需要先创建双向链接
# 	2、可靠:
#	每发一个数据包都需要对方回复ack确认信息之后,才会把本地的数据清除,否则会重复发送几次
		
# ps:基于1和2,tcp协议的程序需要事先启动服务端
	
# udp
# 	1、无链接
#	2、不可靠
#	每放一个数据包不需要对方回复ack确认信息,会直接把本地的数据清除
		
#	ps:基于1和2,udp协议的程序无需事先启动服务端	
#	ps:udp协议传输数据效率比tcp更快,但是tcp协议传输数据更可靠
	
"""
tcp协议为何建立链接需要三次握手,而断开链接却需要四次挥手?
	建立链接:为传数据做准备工作。C向S发送了请求,询问能不能建立连接通道,S同意了,然后S向C也发送了请求,C也同意了,但是大家会纳闷,这不是4次握手嘛,因为中间有两次都是S向C发送了请求,所以说把这两次都合在了一块,同时发送了,所以就是三次握手连接
	断开链接:有数据在传送。在C和S需要断开链接的时候,S或者C就会向对方发出断开连接的请求,对方会同意,但是这次不能同意的时候也发出断开最后连接的请求,因为这个时候可能最后的连接还在传输数据,等传输彻底结束后,就会发送断开最后连接的请求,这个时候在同意,就彻底断开连接了

为何tcp协议可靠?
	每发一个数据包都需要对方回复ack确认信息之后,才会把本地的数据清除,否则会重复发送几次	
	
tcp协议与udp协议的对比?
    tcp协议的程序需要事先启动服务端;udp协议的程序无需事先启动服务端	
	udp协议传输数据效率比tcp更快,但是tcp协议传输数据更可靠
"""	

网络部分剩余

# 1.socket 套接字 
"""
	将传输层,网络层,数据链路层,物理层封装端口,只专心研发应用程序
	socket是对传输层及其以下的封装,应用程序产生的数据包想要往外传输
	直接传给socket就可以了,socket会完成后续的封装
	什么是套接字:我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
	我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。能够唯一标示网络中的进程后,它们就可以利用socket进行通信了。
"""

# 2.DNS
"""
	什么是DNS:域名系统(DNS,Domain Name System)是Internet上解决网上计算机命名的一种系统。
	为什么有DNS:在互联网中,其实没有类似于www.xxx.com这种域名方式,而替代的是以IP地址,如222.222.222.222,那我们在IE地址栏中应当输入222.222.222.222才能打开网站www.xxx.com,但我们细想一下,互联网上的网站成千上万,如果每个网站登陆都需要记住一大串数字,那是不是特别不方便,对于记忆力不强的人,根本无法记住这么烦琐的数字。
	DNS的两种查询方式:递归和迭代方式。
递归:DNS服务器接到客户机请求,必须使用一个准确的结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。(一个个询问)
迭代:DNS服务器会向客户机提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询结果为止。(问一个,提供线索,再去询问下一个)
	浏览器DNS查询顺序:
浏览器DNS缓存->本地系统DNS缓存->本地计算机HOSTS文件->ISP DNS缓存->递归or迭代搜索	
	PS:hosts文件可以充当本地dns用
linux系统:/etc/hosts
windows:C:\Windows\System32\drivers\etc\hosts

	dns服务端端口53

"""

# 3.DHCP
"""
背景:想实现网络通信,每台主机需具备四要素
本机的IP地址
子网掩码
网关的IP地址
DNS的IP地址

	什么是DHCP
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
	DHCP有三种机制分配IP地址:
1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 
3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。 
注意:三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

	dhcp服务端端口67
	
"""
# 4.网络通信整体流程
"""
1.本机获取
    本机的IP地址:192.168.1.100
    子网掩码:255.255.255.0
    网关的IP地址:192.168.1.1
    DNS的IP地址:8.8.8.8
2.打开浏览器,想要访问Google,在地址栏输入了网址:www.google.com。
3.dns协议(基于udp协议)
4.HTTP部分的内容,类似于下面这样:
    GET / HTTP/1.1
    Host: www.google.com
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
    Accept:      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8
    Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
    Cookie: …
	我们假定这个部分的长度为4960字节,它会被嵌在TCP数据包之中。
5 TCP协议
    TCP数据包需要设置端口,接收方(Google)的HTTP端口默认是80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。
    TCP数据包的标头长度为20字节,加上嵌入HTTP的数据包,总长度变为4980字节。
6 IP协议
    然后,TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105(Google)。
    IP数据包的标头长度为20字节,加上嵌入的TCP数据包,总长度变为5000字节。
7 以太网协议
    最后,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到)
    以太网数据包的数据部分,最大长度为1500字节,而现在的IP数据包长度为5000字节。因此,IP数据包必须分割成四个包。因为每个包都有自己的IP标头(20字节),所以四个包的IP数据包的长度分别为1500、1500、1500、560。
8 服务器端响应
    经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。
    根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的”HTTP请求”,接着做出”HTTP响应”,再用TCP协议发回来。
    本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。
"""

# 5.交换机
"""
	什么是VLAN?
VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。
	为什么要有VLAN
二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。
	带 VLAN 的交换机的端口分为两类:
	Access port:链接计算机。这些端口被打上了 VLAN Tag。离开交换机的 Access port 进入计算机的以太帧中没有 VLAN Tag,这意味着连接到 access ports 的机器不会觉察到 VLAN 的存在。离开计算机进入这些端口的数据帧被打上了 VLAN Tag。
	Trunk port:链接交换机。有多个交换机时,组A中的部分机器连接到 switch 1,另一部分机器连接到 switch 2。要使得这些机器能够相互访问,你需要连接两台交换机。 要避免使用一根电缆连接每个 VLAN 的两个端口,我们可以在每个交换机上配置一个 VLAN trunk port。Trunk port 发出和收到的数据包都带有 VLAN header,该 header 表明了该数据包属于那个 VLAN。因此,只需要分别连接两个交换机的一个 trunk port 就可以转发所有的数据包了。通常来讲,只使用 trunk port 连接两个交换机,而不是用来连接机器和交换机,因为机器不想看到它们收到的数据包带有 VLAN Header。

"""

cs结构与bs架构

"""
基于网络通信的软件有两种架构
client-------------------server	
Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。

browser------------------server		
B/S架构即浏览器和服务器架构模式。它是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。"超级客户端"

"""

下周学习内容...

"""
2、操作系统安装
    虚拟机网络模式介绍
        桥接
        NAT
        仅主机
        
    5种分区方案
    
    系统初步优化
    
    xshell
        
3、操作系统启动流程

4、shell命令
"""
posted @ 2021-06-18 17:05  虾虾78  阅读(56)  评论(0)    收藏  举报