前置知识:
为了方便与理解和架构解耦,所以人们将网络分为 七层参考模型
1,OSI 7层参考模型
这个是TPC的网络的原型,在TCP中呢,表示层与会话层一起合并到应用层中。
2TCP/IP网络模型
从上面我们可以看到,我们程序员使用的程序员只占用的应用层,其他层均是归属于操作系统内核来操作。
也就是(敲黑板):并不是程序进行通信,是程序依赖于操作系统内核进行通讯不同主机间通讯
正文开始
我们可以看到这样的一个事实:
1,应用层传输到传输控制层协议,
2,传输控制层有两种协议:TCP和UDP
3,TCP是面向连接,可靠的
TCP为什么是面向连接,可靠的?
TCP包含了一个什么样的过程?
三次握手,
数据传输,
四次分手
(1)三次握手具体过程:
第一次,客户端测试发送一个字段“syn”给服务端,表示在吗?
第二次,服务端发送“syn+ack”,表示我已经收到来自客户端的信息了。
第三次,客户端发送“ack”,表示我收到来自的服务端的信息了
syn和ack英语什么意思?
syn(synchronous)同时的,同步的,在http中指建立请求的第一个包
ack (acknowledgement) 确认的意思
(2)什么是连接?
在三次握手之后,表示双方都是存在,连接可靠的情况各自开放自己计算机资源。
socket对资源进行包装
也就是我们常说的将数据打包,网络包
正如我们上面所讲的,
1,我们的应用程序通过IO与主机进行操作,
2,主机与主机之间服务端简历链接,
依靠套接字进行数据封装,通过传送数据包包的形势通讯。
四元组表示,绝对的唯一连接
面试问题:一共可以建立多少个链接?
源IP*65535
(3)四次分手
1,客户端,首先发送“fin”,分手了 ?
2,服务端,回“fin+ack”,我确定断开的你的链接,分手了 。
服务端不再对客户端分享资源
3,服务端,发送“fin”,你是否断开我链接,分手 ?
4,客户端,会“ack”,我确定断开你的链接,分手 !
客户端不再对服务端分享资源
(4)面试题,如果忽然断网之后怎么办?
1,如果突然断网了双方并不能感知,对方已经断了
2,所以主机之间存在一个心跳(keepalive)来侦测,对方是否存在,链接是否正常
附赠B站视频链接:
阿里面试: TCP/IP、HTTPS、 三次握手四次挥手过程?