TCP/UDP
OSI/RM ---- 开放式系统互联参考模型
一、OSI七层模型:
应用层---- 数据报文:
抽象语言 ---- 编码
表示层:
编码 ---- 二进制
会话层:
提供会话号,同软件不同进程的程序在同时接收发消息时,他们会拥有相同的IP地址和MAC地址,此时就需要会话层分别给予不同的会话号去区分。
这三层都是对数据进行加工。
传输层----数据段:
TCP/UDP
功能:①分段(受到MTU限制) ②端口号
1.MTU:最大传输单元,默认1500字节
分段:当数据包过大时,连续发送可能会使数据在传输途中插入别的数据造成损坏,所以需要对数据包进行分段处理,从而保证数据包的完整性。
2.端口号:使用电脑可能会同时访问多个服务器,这多个服务器在进行回复的时候,回复目标都是相同IP/MAC。为了不分配错误,在该程序启动时,电脑会在 1024~65535 随机分配端口号给这个程序,在服务器回包时也会带着这个端口号,这样电脑就能做出正确的数据分配。
端口号范围:0~65535 注明端口:1~1023 高/动态端口:1024~65535
网络层----数据包:
IP互联网协议
数据链路层----数据帧:
介质访问控制层MAC + 逻辑链路控制层LLC
逻辑链路控制层LLC:对数据惊醒校验,只保障数据完整性;同时增加FCS(校验核),校验数据完整性。
物理层----比特流:
物理硬件
这四层都是对数据的运输,到达对端做出工作 。
二、TCP/IP模型
TCP/IP协议簇:
问题:1.分层不均 2.分层太多
模型区别对比:
PDU(协议数据单元):
对不同层封装的数据单元标识
TTL(生存周期):
最大为255 推荐64 常见128
以太网Ⅱ型帧:
1.封装
2.解封装
三、应用层协议
总括:
层数(1~7) | 协议 |
---|---|
物理层 | RJ45、CLOCK、IEEE802.3 |
数据链路层 | PPP、FR、HDLC、VLAN、MAC、ATM、FDDI、CSMA/CD |
网络层 | IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、BGP、EIGRP |
传输层 | TCP、UDP、SPX、TLS、RTP、SCTP、ATP |
会话层 | NFS、SQL、NETBIOS、RPC、ASP、Winsock、BSD sockets |
表示层 | JPEG、MPEG、ASII、XDR、ASN.1、NCP |
应用层 | FTP、DNS、Telnet、SMTP、POP3、HTTP、HTTPS、WWW、NFS、SNMP、TFTP、SIP、SSH、RTSP、XMPP、WHOIS、DHCP |
HTTP(超文本传输协议)
传输:TCP 端口:80
HTTPS(安全传输协议)
(HTTP+SSL(TLC))
传输:TCP 端口:443
FTP(文件传输协议)
传输:TCP 端口:20/21
TFTP(简单文件传输协议)
传输:UDP 端口:69
Telnet(远程登录标准协议)
传输:TCP 端口:23
SSH(安全外壳协议)
传输:TCP 端口:22
DNS(域名解析协议)
传输:UDP/TCP 端口:53
DHCP(动态主机配置协议)
传输:UDP 端口:67/68
四、两个传输层协议
1.TCP(传输控制协议)
---- 面向连接的可靠协议
在完成了传输层基本工作的同时,还需要保证传输的可靠性。
面向连接
---- 三次握手 四次挥手 建立端到端的虚链路
三次握手
SYN:发起一次连接,并告知自身状态
ACK:标识确认
1)发送syn包 客户端进程进入 SYN-SENT 同步已发送状态
2)ack+syn 客户端进程进入 SYN-SENT 同步已发送状态
3)ack确认 客户端进入ESTABLISHED已建立连接状态
第一次握手:TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文。
客户端向服务器端发送报文(syn)
证明客户端的发送能力正常。
第二次握手:TCP服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。
服务器端接收到报文(syn)并向客户端发送报文(ack)
证明服务器端的接收能力、发送能力正常
第三次握手:TCP客户端收到确认后,还要向服务器给出确认。
客户端向服务器发送报文(ack)
证明客户端的接收能力正常
特殊情况:
-
RST重连
-
TCP严重错误并重连
-
FIN断开
-
PSH紧急加收
-
URG紧急指针
传输途中
四次挥手
第一次挥手:客户端发出连接(fin)释放报文,并且停止发送数据。释放数据报文首部,FIN=1,
客户端进入FIN-WAIT-1(终止等待1)状态
第二次挥手:服务器端接收到连接释放报文(fin)后,发出确认报文(ack),ACK=1,ack=u+1,并且带上自己的序列号seq=v,
服务端进入CLOSE-WAIT 关闭等待状态
第三次挥手:客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(fin),服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,
服务器就进入LAST-ACK(最后确认)状态,等待客户端的确认。
第四次挥手:客户端收到服务器的连接释放报文后(fin),必须发出确认,此时,客户端进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态。
服务器端接收到确认报文后(ack),会立即进入CLOSED关闭状态,到这里TCP连接断开,四次挥手完成。
可靠性
----4种可靠性机制 ---> 确认/排序/重传/流控
2.UDP(用户数据报文协议)
----非面向连接的不可靠协议
仅完成传输的基本工作 ---- 分段 端口号
3.TCP与UDP的区别
TCP | UDP |
---|---|
面向连接 | 无连接 |
速度慢 | 速度快 |
可靠传输 | 不可靠传输 |
20字节头 | 8字节头 |
五、IP的包头
TCP的分段和IP的分片
IP分片的原因:
受到二层/数据链路层MTU的限制,最大传输单元不能超过1500字节
数据达到网络层大于MTU则会分片,为了提高传输效率,减少分片,TCP在装载数据时如果能做到封装后的数据不引起三层/网络层分片则是一种最佳选择,MSS值的目的就是基于双方的 MTU 协商出一个最大传输承载长度。
标准三次握手包:
六、操纵网络设备
配置网关IP地址:
#尖括号代表用户视图,仅具有查询权限,不能进行配置操作;Huawei 代表用户名 <Huawei> #查看每个接口的IP配置情况 <Huawei>display ip interface brief
#进入系统视图,尖括号变为方括号 <Huawei>system-view #系统视图 [Huawei] #更改设备名称为 Cloudyfly [Huawei]sysname Cloudyfly #进入0/0/0 接口 [Cloudyfly]interface g 0/0/0 等同于 [Cloudyfly]interface GigabitEthernet 0/0/0 #返回上一层 quit/q [Cloudyfly-GigabitEthernet0/0/0]quit #查看IP [Cloudyfly-GigabitEthernet0/0/0]ip ? #查看IP地址 [Cloudyfly-GigabitEthernet0/0/0]ip address ?
#在该接口上配置IP地址,IP地址为 192.168.1.1/24 [Cloudyfly-GigabitEthernet0/0/0]ip address 192.168.1.1 24 #与上述命令相同 [Cloudyfly-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 #查看当前视图下的配置 [Cloudyfly-GigabitEthernet0/0/0]display this #查看当前所有的配置操作 ---- 查看缓存中的配置 [Cloudyfly]display current-configuration
#配置第二个接口 0/0/1 [Cloudyfly]interface GigabitEthernet 0/0/1 [Cloudyfly-GigabitEthernet0/0/1]ip address 192.168.2.1 255.255.255.0 Jan 23 2024 18:59:27-08:00 Cloudyfly %%01IFNET/4/LINK_STATE(l)[1]:The line proto col IP on the interface GigabitEthernet0/0/1 has entered the UP state.
两个IP都配置成功:
将该设备中的缓存配置保存至闪存flash中:
快捷键:
-
Ctrl+Z 直接弹回用户视图
-
Tab键 自动补全命令
-
问号? 查询后续可执行指令
-
方向键↑ 上一步指令
DNS(域名解析协议)
DNS,因特网上作为域名和IP地址相互映射的一个分布式数据库,为了能够使用户方便访问,而不用去记忆那些繁琐的IP地址。
通过主机域名,最终得到对应的IP地址,这个过程就叫做域名解析。
DNS协议运行在UDP协议之上(TCP也存在),使用端口号53
它还是一个典型的 C/S 架构 (客户端/服务器),既有DNS客户端,也有 DNS服务器。