网络(2) - TCP/IP系列(TCP/IP模型)

TCP/IP参考模型

网络(2) - TCP/IP系列(TCP/IP模型)

TCP/IP各层的作用

网络(2) - TCP/IP系列(TCP/IP模型)

TCP/IP各层典型协议

 

 网络(2) - TCP/IP系列(TCP/IP模型)

应用层

  • HTTP(80) 超文本传输协议,提供浏览网页服务;
  • Telnet(23) 远程登录协议,提供远程管理服务;
  • FTP(20,21) 文件传输协议,提供互联网文件资源共享服务;
  • SMTP(25) 简单邮件传输协议,提供互联网电子邮件服务;
  • POP3(110) 邮局协议,提供互联网电子邮件服务;
  • TFTP(69)(UDP) 简单文件传输协议,提供简单的文件传输服务;

主机到主机层

  • TCP(传输控制协议) 属于面向连接的网络协议;
  • UDP(用户报文协议) 属于无连接的网络协议;
  • TCP/UDP报文格式

网络(2) - TCP/IP系列(TCP/IP模型)

网络(2) - TCP/IP系列(TCP/IP模型)

  • TCP连接建立(三次握手)建立会话 [***时自己的,ACK号是对端的]

网络(2) - TCP/IP系列(TCP/IP模型)

  • TCP连接断开(四次挥手)

网络(2) - TCP/IP系列(TCP/IP模型)

  •  滑动窗口机制

网络(2) - TCP/IP系列(TCP/IP模型)

 

因特网层 IP

负责将分组报文从源端发生到目的端;为网络中的设备提供逻辑地址,负责数据包的寻径和转发。

网络(2) - TCP/IP系列(TCP/IP模型)

  • 报文格式

网络(2) - TCP/IP系列(TCP/IP模型)

(Time to live: 用于防环,结合ICMP协议)

 

  • ARP(Address Resolution Protocol) :广播,不可靠,不安全。MAC地址为全FF。

作用:1. 将IPv4地址解析为MAC地址;2.维护ARP映射的缓存。

IPV6没有了;在LAN中,靠MAC来寻址。

 

  • 工具:Ping(ICMP), Traceroute/Tracert

 

 

TCP/IP 建立和断开会话详解

网络(2) - TCP/IP系列(TCP/IP模型)

包含三部分:建立连接, 传输数据, 断开连接。

1. 三次握手建立连接

第一次握手:Client发生SYN包(seq=x)到Server,并进入SYN_SEND状态,等待Server确认;

第二次握手:Server收到SYN包,确认Client的SYN(ack=x+1),同时自己也发生一个SYN包(seq=y),即SYN+ACK包,

                     此时Server进入SYN_RECV状态;

第三次握手:Client收到Server的SYN+ACK包,向Server发送确认包ACK(ack=y+1),此包发送完毕,Client和Server进入

                      ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

 

2. 数据传输

a. 超时重传

超时重传机制用来保证TCP传输的可靠性。每次发送数据包时,发送的数据报都有seq号,接收端收到数据后,会回复ack进行确认,表示某一seq 号数据已经收到。发送方在发送了某个seq包后,等待一段时间,如果没有收到对应的ack回复,就会认为报文丢失,会重传这个数据包。

b.快速重传

接受数据一方发现有数据包丢掉了。就会发送ack报文告诉发送端重传丢失的报文。如果发送端连续收到标号相同的ack包,则会触发客户端的快速重 传。比较超时重传和快速重传,可以发现超时重传是发送端在傻等超时,然后触发重传;而快速重传则是接收端主动告诉发送端数据没收到,然后触发发送端重传。

c.流量控制

这里主要说TCP滑动窗流量控制。TCP头里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己 还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。 滑动窗可以是提高TCP传输效率的一种机制。

d.拥塞控制

滑动窗用来做流量控制。流量控制只关注发送端和接受端自身的状况,而没有考虑整个网络的通信情况。拥塞控制,则是基于整个网络来考虑的。考虑一下这 样的场景:某一时刻网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,但是,重传会导致网络的负担更重,于是会导致更大的延迟以及更多 的丢包,于是,这个情况就会进入恶性循环被不断地放大。试想一下,如果一个网络内有成千上万的TCP连接都这么行事,那么马上就会形成“网络风 暴”,TCP这个协议就会拖垮整个网络。为此,TCP引入了拥塞控制策略。拥塞策略算法主要包括:慢启动,拥塞避免,拥塞发生,快速恢复。

3. 四次挥手

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当 然,在FIN包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。