31 网络基础知识-后篇

网络基础知识-后篇

1 互联网协议

单位内容协议
物理层位 (bit)二进制数据
数据链路层帧 (frame)帧头 + 数据以太网协议
网络层包 (packet)IP报头 + 数据IP协议 ARP协议
传输层段 (segment)TCP/UDP报头 + 数据TCP协议 UDP协议
应用层数据

数据链路层提供mac地址,用于定位子网内的主机。
网络层提供ip地址,用于区分子网。
ip地址 + mac地址 可以标识定位世界上独一无二的一台主机

自定义协议需要注意的问题:

  1. 协议由两部分组成:头部 + 数据部分
    头部:存放数据的描述信息,例如发送者,接收者,数据类型和长度等;
    数据部分:发送的数据。
  2. 头部长度必须固定
    接收者首先需要通过头部数据获取所接收数据的详细信息,需要区分出数据中哪一部分是头部数据。

2 传输层

传输层用于建立端口到端口之间的通信

2.1 端口

端口是应用程序与网卡关联的编号,用于定位主机上的基于网络通信的程序。
端口范围为:0-65535,其中0-1023为系统占用端口。
ip地址 + mac地址 + port地址可以标识世界上的独一无二的一个基于网络通信的程序。

2.2 tcp协议
2.2.1 tcp报文

在这里插入图片描述

2.2.2 三次握手 四次挥手

基于tcp协议进行通信需要在客户端与服务端之间建立一个双向连接通道。
建立连接通路的方式是三次握手
断开连接通路的方式是四次挥手
在这里插入图片描述

2.2.3 三次握手

在这里插入图片描述
名词:

  1. SYN:同步序列编号(Synchronize Sequence Numbers)
    TCP建立连接时使用的握手信号。
  2. ACK:确认字符(Acknowledge Character)。
  3. seq:序列号(Sequence)。

三次握手步骤:

第一次握手
客户端向服务端发送SYN包申请连接(SYN=1,seq=x),然后客户端进入状态SYN_SENT,等待服务端确认。

第二次握手
服务端收到SYN包后,必须确认客户的SYN(ack=x+1),同时向客户端发送一个包进行确认并申请连接,即SYN+ACK包(SYN=1,ACK=1,seq=y,ack=x+1),此时服务端从Listen状态进入SYN_RECV状态。

第三次握手
客户端收到来自服务端的SYN+ACK包,向服务端再次发送确认包ACK(ACK=1,seq=x+1,ack=y+1),客户端发送后进入ESTABLISHED(TCP连接成功)状态,服务端收到后也进入ESTABLISHED状态。

2.2.4 数据传输

tcp协议下的传输属于可靠传输,数据发送后都会等待对方回应,只有收到成功接收的回应后这次发送才算完成,否则一段时间后再次发送。

2.2.5 四次挥手

在这里插入图片描述
第一次挥手
客户端进程发出连接释放报文,并且停止发送数据,客户端进入FIN-WAIT-1(终止等待1)状态。
FIN=1,其序列号为seq=u,其中u等于前面传送过来的数据的序号加1。TCP协议规定,FIN报文段即使不携带数据,也要消耗一个序号。

第二次挥手
服务端收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。
此时客户端不会再向服务端发送数据,但服务端可以继续向客户端发送数据,因此客户端与服务端之间的通路处于半关闭状态。

客户端收到服务端的确认后,进入FIN-WAIT-2(终止等待2)状态,还要继续接收来自服务端的数据,等待服务端发送连接释放报文。

第三次挥手
服务端发送数据完毕后,向客户端发送连接释放报文,FIN=1,ack=u+1,此时,服务端就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
在通路处于半关闭状态时,服务端很可能又发送了一些数据,假定此时的序列号为seq=w。

第四次挥手
客户端收到服务端的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

服务端收到了客户端发出的确认后,立即进入CLOSED状态。撤销TCB后,就结束了这次的TCP连接。

2.2.6 经验
  1. 如果服务端大量处于SYN_RECV状态,此时服务端有可能正在遭受SYN洪水攻击;
  2. 如果服务端大量处于TIME_WAIT状态,此时服务端正在经历高并发。
2.2.7 半连接池

允许等待的最大连接请求数。
限制的是同一时刻的连接请求数,而非连接数。
相当于队列,后进先出。

2.3 udp协议
  1. udp协议下的传输属于不可靠传输;
  2. udp协议下的传输速度快。

udp协议不需要建立连接,传输数据后不需要对方确认。

3 应用层

基于网络的应用程序一般工作于应用层。
应用层用于规定应用程序的数据格式。

Socket抽象层将应用层以下的传输层,网络层,数据链路层和物理层都进行了封装,因此应用层只需与Socket抽象层打交道。

4 其它

4.1 DHCP协议
4.1.1 介绍

DHCP协议(动态主机配置协议,Dynamic Host Configuration Protocol),是自动为处于内网的机器分配IP地址等信息的局域网协议,用于动态获取IP地址。

4.1.2 工作流程

基于udp协议发包。

以太头ip头udp头DHCP数据包
  1. 以太网标头”
    存放发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。
    此时本机不知道DHCP服务器的MAC地址,于是,接收方的MAC地址设置为广播地址:FF-FF-FF-FF-FF-FF;
  2. IP标头
    设置发出方的IP地址和接收方的IP地址。
    这时本机不知道这两个IP地址,于是,发出方的IP地址设置为0.0.0.0,接收方的IP地址设设置为255.255.255.255;
  3. UDP标头
    设置发出方的端口和接收方的端口。
    端口是DHCP协议规定好的,发出方使用68端口,接收方使用67端口。

处于同一个子网内每台主机都会收到这个包。
接收方的MAC地址是FF-FF-FF-FF-FF-FF,无法判断接收者是谁,因此收到包的主机需要分析这个包的IP地址,才能确定是不是发给自己的。
当看到发出方的IP地址是0.0.0.0,接收方是255.255.255.255时,DHCP服务器知道这个包是发给我的,而其它主机可以丢弃这个包。

DHCP服务器读取这个包的数据,分配IP地址,发送一个”DHCP响应”数据包。在响应包中,以太网标头中的MAC地址是双方的网卡MAC地址,IP标头中的IP地址分别是DHCP服务器的IP地址(发送方)和255.255.255.255(接收方),UDP标头中的端口分别是67(发送方)和68(接收方)。分配 给请求端主机的IP地址和本网络的具体参数等信息则包含在Data部分中。

新加入子网的主机收到这个响应包后,就知道分配给自己的IP地址、子网掩码、网关地址、DNS服务器等参数。

4.2 DNS

DNS(Domain Name System)域名系统,主要用于域名与IP地址之间相互转换。DNS能够使用户使用网址更方便地访问互联网,而不需要去记住由数字组成的IP地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值