30、网络基础

现有网络通信架构

CS架构:由客户端和服务端软件组成,应用层协议可以自己来定义
BS架构:由浏览器当作客户端,以及服务端软件租组成,应用层协议需要遵循浏览器的应用层协议来定义

网络的介绍

网络通信依赖的物理介质+通信协议(相当于一个翻译官)

互联网通信协议的原理

互联网的通信基于OSI七层模型,从上至下分为,应用层、表示层、会话层、传输层、网络层、数据链路层、物理层(应表会传网输入)
一般我们也将其当作OSI五层模型 
每一层都有相应的协议,协议的共同特点是由数据报文的头部+数据部分组成,数据部分是上层协议封装后传给下层的
 应用层协议:http、telnet、dhcp
传输层协议:tcp(流协议)、udp
网络层协议:arp、icmp
数据链路层:ethernet
物理层:电信号
网络通信过程
两主机的通信(涉及到的协议-以太网协议、arp协议、ip协议)
  1. 前提是物理链路要通
  2. client应用层数据加上传输层的头部被传输层 协议封装成数据段;数据段加上网络层头部被网络层协议封装成数据包;
  3. 此时client会查找本机的路由表,找到下一跳和出接口,通过arp协议获取目标ip的mac地址
  4. client通过 以上获取的src-mac、dst-mac对上层数据包封装成数据帧
  5. 数据帧封装完成后交给对应的网卡发送给交换机进行转发(以上过程是一个封装的过程)
  6. 因为是局域网,交换机会找到对应的mac地址,并将数据包转发给对应的端口。
  7. 之后经过的网络设备都会查看数据帧中dst-mac是不是自己的或者广播包,如果是自己的则将数据帧解封装成数据包给上层协议处理。网络层查看dst-ip是否是自己的来决定是否继续进行解封装,如果不是自己的查看网络设备的路由表进行路由转发。(中间这些经过网络设备的传输过程改变的只有dst-mac,其他报文头部没有变化)
  8. server端收到了数据帧后进行数据的解封装。
tcp流协议(三次握手、四次分手,11种状态)

服务端状态
三次握手(一般是客户端发起)

  1. Listen: 服务端的初始状态
  2. SYN_RECV: 服务端接收到syn_send并发送syn建立连接的请求,状态会从listen转变为syn_recv
  3. ESTABLISHED: 服务端客户端的ack响应报文后,状态变为established

四次挥手(一般是服务端发起)
4. FIN_WAIT1: 服务端主动发起fin断开连接后,服务端的状态变为fin_wait1
5. FIN_WAIT2: 服务端收到客户端的fin和ack响应时,状态变为fin_wait2
6. TIME_WAIT: 服务端收到客户发来的fin报文请求并返回ack,状态变为time_wait,2MSL周期变为closed
7. CLOSED:
客户端状态
三次握手

  1. SYN_SEND: 客户端发送连接请求后的状态
  2. ESTABLISHED: 客户端收到服务端的ack和syn请求后,并发送ack的响应后,状态变为established

四次挥手
3. CLOSE_WAIT: 客户端收到服务端的fin请求后,如果没有要传输的数据则发送fin和ack响应,状态变为close_wait
4. LAST_ACK: 客户端主动发起fin断开连接请求,状态变为last_ack
5. CLOSED: 收到服务端的ack报文后,状态变为closed

常见问题

  1. 为什么tcp连接时三次握手,四次分手
  2. time_wait的意义
  3. 服务器上出现很多的syn_revc或者time_wait代表什么?
udp协议

udp没有重传和确认机制

socket介绍

socket又名套接字,为方便应用程序的开发,每种语言都有自己对应的套接字模块,socket代表了包括传输层以下的包的封装和解封装。
也就是说应用层程序只需要调用socket接口就能完成数据包的封装和解封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据工匠大壮

请狠狠粗暴的爱我!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值