我是靠谱客的博主 激动大树,最近开发中收集的这篇文章主要介绍网络--网络层和传输层网络层传输层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

网络层

网络层功能

  • 定义了基于IP协议的逻辑地址
  • 连接不同的媒介类型(路由器)
  • 选择数据通过网络的最佳路径

ICMP协议(控制报文协议)

  • ICMP是一个“错误侦测(用ping命令)与回馈机制(Linux系统用traceroute;Windows系统用tracert)"

  • 通过IP数据包封装的

  • 用来发送错误和控制消息 

ICMP协议的封装

ICMP协议属于网络层协议,下图是ICMP数据的封装过程。

ICMP消息类型和编码类型

类型编码描述
00Echo Reply
30网络不可达
31主机不可达
32协议不可达
33端口不可达
50重定向
80Echo Request

 

 

 

 

 

 

 

 

 

Ping命令

  • ping命令的基本格式为

  • -a参数可以显示主机名称

  • -l参数可以设定ping包的大小(单位为字节;可用于简单测试通信质量)

  • -t是重复不停地ping

  • ping命令的返回信息

ARP协议概述

Address Resolution Protocol,地址解析协议。它是将一个已知的IP地址解析成MAC地址,是局域网中主机的通信(IP地址与MAC地址)

IP地址解析为MAC地址

  1. PC1发送数据给PC2,查看缓存(ARP)没有PC2的MAC
  2. PC1发送ARP请求消息(广播)
  3. 所以主机收到ARP请求消息
  4. PC2回复ARP应答(单播)
  5. 其他主机丢弃

就是PC1要发送数据给PC2,但它不知道PC2的MAC地址(即ARP没有PC2的MAC),所以它向其他3个PC机广播,其他的3个主机收到PC1的请求消息,然后它们的ARP会记录PC1的MAC同时查看自己是否是PC1请求的目的MAC,PC2就会通过单播向PC1回复应答,PC3、PC4不会回复。

ARP的报文格式

ARP相关命令

ARP攻击与欺骗原理

ARP攻击原理:PC2向PC1发送一个虚假的网关MAC地址,PC1向PC2发送数据时,就会发送到虚假的MAC地址当中,不会传到正常internet网关,而虚假位置不提供internet网络服务,所以PC1的数据一直发不出去,导致无法通信。

ARP欺骗的原理:PC1和PC2建立通信时,PC3分别向PC1和PC2提供虚假MAC地址,PC3向PC1发送一个PC2的虚假的网关MAC地址,PC3向PC2发送一个PC1的虚假的网关MAC地址,PC1向PC2发送数据时,就会发送到虚假的MAC地址(PC3)当中,PC3就会收到并查看PC1发送的数据,之后PC3将数据原封不变的转发给PC2,PC1和PC2之间仍然可以通信,只是通信信息被PC3获取了。

传输层

TCP和UDP协议

  • TCP(Transmission Control Protocol)传输控制协议
  • UDP(User Datagram Protocol)用户数据报协议

TCP协议

  • TCP是面向连接的、可靠的进程到进程通信的协议
  • TCP提供全双工服务,即数据可在同一时间双向传输
  • TCP报文段(TCP将若干个字节构成一个分组,叫报文段,TCP报文段封装在IP数据报中)

TCP报文段

源端口号(16)目标端口号(16)
序号(32)
确认号(32)
首部长度(4)保留(6)URGACKPSHRSTSYNFIN窗口大小(16)
校验和(16)紧急指针(16)
选项

 

 

 

 

 

 

 

  • URG(Urgent):表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效。
  • ACK:表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1。
  • PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。
  • RST:表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。
  • SYN:在建立连接时使用,用来同步序号。当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;当 SYN=1,ACK=1 时,表示对方同意建立连接。SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为 1。
  • FIN:标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。

TCP三次握手四次挥手

三次握手:

1.首先客户端向服务器端发送一段TCP报文,标志位为SYN,表示“请求建立新连接”,序号为Seq=X,随后客户端进入SYN-SENT阶段。

2.服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文。标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”;序号为Seq=y;确认号为Ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号Ack的值。

3.客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。标志位为ACK,表示“确认收到服务器端同意连接的信号”(即告诉服务器,我知道你收到我发的数据了);序号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序号值;确认号为Ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号Ack的值。

 

 

4次挥手:

1.首先客户端想要释放连接,向服务器端发送一段TCP报文。标记位为FIN,表示“请求释放连接“,序号为ACK=1,随后客户端进入FIN-WAIT-1阶段,即半关闭阶段。并且停止在客户端到服务器端方向上发送数据,但是客户端仍然能接收从服务器端传输过来的数据。

2.服务器端接收到从客户端发出的TCP报文之后,确认了客户端想要释放连接,随后服务器端结束ESTABLISHED阶段,进入CLOSE-WAIT阶段(半关闭状态)并返回一段TCP报文,标记位为ACK,表示“接收到客户端发送的释放连接的请求”。

3.服务器端自从发出ACK确认报文之后,经过CLOSED-WAIT阶段,做好了释放服务器端到客户端方向上的连接准备,再次向客户端发出一段TCP报文,标记位为FIN,ACK,表示“已经准备好释放连接了”。

4.客户端收到从服务器端发出的TCP报文,确认了服务器端已做好释放连接的准备,结束FIN-WAIT-2阶段,进入TIME-WAIT阶段,并向服务器端发送一段报文,标记位为ACK,表示“接收到服务器准备好释放连接的信号”。

 

常用的TCP端口号及其功能

端口协议说明
20FTP数据传输端口
21FTR服务器所开放的控制端口
23TELNET用于远程登陆,可以远程控制管理目标计算机
25SMTPSTMP服务器开放的端口,用于发送邮件
80HTTP超文本传输协议
110POP3用于邮件的接收

 

 

 

 

 

 

 

 

UDP协议

无连接、不可靠的传输协议但花费的开销小。

UDP报文的首部格式:

源端口号(16)目标端口号(16)
UDP长度(16)UDP校验和(16)

 

 

 

UDP长度:用来指出UDP的总长度,为首部加上数据

校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制

常用的UDP端口号及其功能

端口协议说明
69TFTP简单文件传输协议
111RPC远程过程调用
123NTP网络时间协议

 

最后

以上就是激动大树为你收集整理的网络--网络层和传输层网络层传输层的全部内容,希望文章能够帮你解决网络--网络层和传输层网络层传输层所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部