三次握手四次挥手
三次握手
1------建立连接----------------------2 ACK=1,seq=0
2------传输数据,建立连接---------1
1------传输数据,建立连接---------2
三次握手用于建立TCP连接,确保通信双方都准备好进行数据传输。整个过程涉及三次报文交换:
- 第一次握手 (客户端发送SYN):
客户端向服务器发送一个SYN(同步序列编号)请求,表示希望建立连接,同时带上一个初始序列号。 - 第二次握手 (服务器发送SYN-ACK):
服务器收到客户端的SYN请求后,回复一个SYN-ACK包。这个包表示服务器同意建立连接,并确认客户端的SYN,同时带上自己的初始序列号。 - 第三次握手 (客户端发送ACK):
客户端收到服务器的SYN-ACK包后,发送一个ACK(确认)包,确认服务器的SYN号。此时,双方都同意连接建立,TCP连接正式建立。
四次挥手
1--------断开连接--------------------------2 fin=1,ACK=1
2--------确认断开连接---------------------1
2--------若有数据传完正式断开连接-----1
1--------确认断开连接---------------------2
四次挥手用于断开TCP连接,确保双方都能够正常终止数据传输。它需要四次报文交换:
- 第一次挥手 (客户端发送FIN):
客户端发送FIN(结束标志)包,表示它已经完成数据传输,想要终止连接。 - 第二次挥手 (服务器发送ACK):
服务器收到FIN后,回复一个ACK包,确认客户端的FIN,但服务器此时可能还有数据要发送,因此连接暂时不会关闭。 - 第三次挥手 (服务器发送FIN):
当服务器也完成数据传输后,发送一个FIN包,表示它也准备好关闭连接。 - 第四次挥手 (客户端发送ACK):
客户端收到服务器的FIN后,发送一个ACK包,确认服务器的FIN。此时,连接完全关闭。
- 三次握手是为了确保客户端和服务器都能正常建立连接。
- 四次挥手则是为了保证双方能够妥善地关闭连接,避免数据丢失
网络通信
由于数据在二层封装时无法得知目标IP地址的MAC地址,导致二层的封装无法进行,所以产生了ARP( Address Resolution Protocol )
ARP缓存表是用来存放IP地址和MAC地址的映射关系。
ttl : TTL(Time to Live)是网络通信中用于限制数据包生存时间的一个字段。它的主要作用是防止数据包在网络中无限循环。
arp通告: ARP通告(ARP Announcement)是网络中使用ARP协议时的一种特殊的ARP请求,通常用来更新或确认网络中设备的IP地址和MAC地址的对应关系。
路由:目标地址 (主机路由,网络路由) 下一跳(网关) 最终实现
0.0.0.0/0.0.0.0:默认路由
A,B同一网络
A,B同一网络中通信,本地通信广播,获取mac地址 ARP广播协议
- A发起通信请求:假设A想要与B通信,首先A会构建数据包,包含源IP地址(A的IP地址)、目标IP地址(B的IP地址)以及其他协议层信息。
- 数据包封装与发送:数据包在发送之前会被封装,加入二层的MAC地址信息。A设备的网卡查找目标B的MAC地址(通常通过ARP协议查找B的MAC地址)。一旦获取B的MAC地址,A的网卡会将数据包发送到网络。
- 交换机转发数据:假如A和B在同一个局域网中,数据包会通过网络中的交换机(如果有)进行转发。交换机会根据目标MAC地址查询其MAC地址表,找到B所在的端口,并将数据包转发到对应的端口。
- B接收数据包:当数据包到达B时,B的网卡会检查目标MAC地址是否匹配自己的MAC地址。如果匹配,B的网卡会将数据包发送给操作系统。操作系统将解封装报文,解析并传递到上层的应用程序。
A,C不同网络通信,封装mac地址
- A发起通信请求:设备A想与设备C通信,首先A会构建一个包含源IP地址(A的IP地址)和目标IP地址(C的IP地址)的数据包。
- 数据包封装:数据包在发出前会封装成以太网帧,其中包含源MAC地址(A的MAC)和网关的MAC地址(而不是C的MAC,因为C不在同一个网络)。
- 数据包到达默认网关:数据包经过A所在的局域网,并通过交换机或其他网络设备,最终到达A的默认网关(通常是路由器)。
- 路由器转发:路由器会根据数据包中的目标IP地址(C的IP地址)查找路由表,确定数据包的下一跳(可能是另一个路由器或C所在的子网)。此时,数据包的源MAC地址更新为路由器的MAC地址,目标MAC地址更新为下一跳设备的MAC地址。
- 数据包到达C所在网络:数据包通过网络传输后,最终到达C所在的子网。在这里,数据包会被进一步转发,最终到达C设备。
- C接收数据包:设备C的网卡检查目标MAC地址是否匹配自己。如果匹配,C设备会接收并处理该数据包。
访问网站的全过程
1.DNS解析:将域名转化为地址,浏览器会查询本地缓存,找不到就向配置的DNS服务器发送查询请求,DNS会返回对应的IP地址
2.建立TCP连接,浏览器使用获得的IP地址和端口与百度服务器建立连接,三次握手
3.发送HTTP请求,TCP建立后,浏览器向服务器发送一个HTTP请求报文
4.服务器处理请求,百度的服务器收到请求后,会处理请求,查找相应的资源,处理完毕后,服务器会生成一个HTTP响应报文
5.发送HTTP响应,服务器将响应报文送回给客户端,响应报文中包含状态行,响应头,空行和响应体等
6.浏览器渲染页面:浏览器接收到HTTP响应后,解析HTML内容,下载并处理CSS、JavaScript和图片等资源。浏览器将页面内容呈现给用户。
7.断开连接,如果使用的是HTTP/1.0,连接在响应发送完毕后会立即关闭。如果使用的是HTTP/1.1,连接可以保持打开(Keep-Alive),以便复用同一连接发送更多请求。关闭连接需要进行四次挥手(Four-way Handshake)
linux主机接入到网络中:
本地通信:ip/netmask
跨网络通信:路由(网关)
基于主机名通信:DNS服务器地址(主DNS服务器地址。备用DNS服务器地址,第三DNS服务器地址)
网络接口命名方式
以太网:ethX
ppp网络:pppX
o<insdex>:集成设备的设备索引号
s<slot>:扩展槽的索引号
x<MAC>:基于mac地址的命名
p<bus><slot>:基于总线及槽的拓扑结构进行命名
配置方式
静态指定:命令或者修改配置文件
ifcfg:ifconfig:配置IP,NETMASK
route:路由
netstat:状态及统计数据查看
iproute2:ip add:地址和掩码 ip link:管理网络接口 IP route:路由
ss:状态及统计数据查看
centos7引入了nm(Network Manager)命令:nmcli:命令行工具
nmutl:text window工具
依赖:DNS服务器指定需要修改/etc/resolv.conf文件。
配置文件:centos:/etc/sysconfig/network-scripts/ifcfg-网卡name
ubuntu:/etc/netplan/01-netcfg.yaml
动态分配:本地网络中有DHCP服务,DHCP动态分配ip地址