概述
1. 三次握手和四次挥手
1. 三次握手建立连接
1. 前置知识
- ACK Acknowledge Character 确认字符
- SYN synchronize 同步信号,发出的连接信号
- FIN finish 结束信号(不确定,大致意思吧,以后再修正)
2. 概念
第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
2. 四次握手断开连接
概念
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当 然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
2. OSI七层协议
参考 https://baijiahao.baidu.com/s?id=1623342279899809678&wfr=spider&for=pc
7-应用层、6-表示层、5-会话层、4-传输层、3-网络层、2-数据链路层、1-物理层
历史演进
- 两个硬件之间如何进行通信,需要物理层,物理线路,比特为单位。
- 时代发展,有了无线通信,需要保证不同介质传输数据的正确性,数据链路层
- 需要保证大文件数据的准确性,数据封装为包,传输层
- 终端越来越多,如何快速找到对方,网络层,路由器,IP,TCP/IP协议
- 用户体验不好,希望自动收发包,自动寻址,会话层,建立和管理应用程序之间的通信
- 不同操作系统,语法不同,表示层,解决不同系统之间的通信语法问题
- 可以愉快的编写应用程序实现需求,应用层
最后
以上就是忧虑牛排为你收集整理的java提高之网络的全部内容,希望文章能够帮你解决java提高之网络所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复