TCP/IP学习
1.简介
TCP/IP指传输控制协议/网际协议(Transmission Control Protocal/Internet Protocol),是用于因特网(internet)的通信协议,它定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准
2.TCP/IP的内部协议
在TCP/IP中包含着一系列用于处理数据的主要通信协议:
- TCP(传输控制协议):用于应用程序之间的通信(面向连接),与UDP相比,TCP提供的服务更可靠
- UDP(用户数据报协议):用于应用程序之间的简单通信(无连接),无需建立连接就能够发送封装的IP数据包
- IP(网际协议):用于计算机之间的通信,IP是整个TCP/IP的核心,也是构成互联网的基础,位于OSI七层模型的网络成,对上可载送传输层各种协议的信息,例如TCP,UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送;为了适应异构网络,IP强调适应性、简洁性、可操作性,并在可靠性做了一些牺牲
- ICMP(因特网消息控制协议):针对错误和状态,用于在IP主机、路由器之间传递控制消息
- DHCP(动态主机配置协议):针对动态寻址,它是一个局域网的网络协议,指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码
表:OSI七层模型、TCP/IP概念模型和TCP/IP协议簇
tips:TCP/IP五层模型是将OSI七层模型中的应用层、表示层和会话层一同归纳为了应用层
3.TCP/IP
TCP/IP意味着TCP和IP一起协同工作。
TCP负责应用软件(如浏览器)和网络软件之间的通信
IP负责计算机之间的通信
TCP负责将数据分割并装入IP包,然后在它们到达时重新组合
IP负责将包发送到接收者
4.TCP/IP的三次握手和四次挥手
客户端与服务器之间的三次握手:
图像解释:
客户端与服务器的四次挥手:
先由客户端向服务器端发送一个FIN,请求关闭数据传输。
当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ
然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。
当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ
四次挥手保证了数据能够完整传输,当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。
但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,
再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。