TCP/IP协议(自用)

TCP/IP协议

  • 常见的协议在OSI模型中的位置
  • tcp/ip协议
  • 常见问题

常见的协议在OSI模型中的位置

7 应用层:规定数据的传输协议; 例如HTTP、SMTP、FTP、Telnet、SSH
6 表示层:表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别; 可以理解为:解决不同系统之间的通信,eg:Linux下的QQ和Windows下的QQ可以通信 例如XDR、ASN.1、SMB、AFP、NCP(暂时没见过)
5 会话层 :建立一个连接(自动的手机信息、自动的网络寻址) 例如SSH、BSD sockets
4 传输层 :传输层向高层提供可靠的端到端的网络数据流服务(每一个应用程序都会在网卡注册一个端口号,该层就是端口与端口的通信!常用的(TCP/IP)协议) 例如TCP、UDP
3 网络层 :网络层负责在源和终点之间建立连接 例如IP、ICMP、IGMP、IPX、BGP、OSPF、 RIP、IGRP、EIGRP、ARP、RARP
2 数据链路层 :数据链路层通过物理网络链路供数据传输(规定了0和1的分包形式,确定了网络数据包的形式)例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
1 物理层: 物理层负责最后将信息编码成电流脉冲或其它信号用于网上传输
例如线路、无线电、光纤、信鸽

OSI 模型各层间关系和通讯时的数据流向如图所示:
TCP/IP协议(自用)_第1张图片

tcp/ip协议

手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上

SYN:建立一个新连接。
FIN:断开一个连接

建立起一个TCP连接需要经过“三次握手”:
TCP/IP协议(自用)_第2张图片

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

TCP断开连接需要经过“四次挥手”:
TCP/IP协议(自用)_第3张图片
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。

第二次挥手:服务器端收到FIN后,发送一个ACK给客户端,服务器端进入CLOSE_WAIT状态。

第三次挥手: 服务器端发送一个FIN,用来关闭服务器端到客户端的数据传送,服务器端进入LAST_ACK状态。

第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,发送ACK给服务器端,服务器端进入CLOSED状态,完成四次挥手。

常见问题

1.为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的,但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。(其实重点就是三次握手中间服务器端可以SYN+ACK报文一起发,但是四次挥手中间FIN和ACK必须分开发)
2.如果已经建立了连接,但是客户端突然出现故障了,怎么办
答:TCP设有一个保活计时器,如果客户端出现故障,服务器不可能一直等下去白白浪费资源,服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常设置为2小时,如果2小时内还没收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没有反应,服务器就认为客户端出了故障,接着就关闭连接。

你可能感兴趣的:(网络协议,网络)