OSI 7层参考模型图
TCP/IPTCP/IP物理实现的层次图
虽然模型上有7层但在实现中,把上面的应用层,表示层,会话层统一整合到应用层里。 注意: 1,像平时使用的浏览器,qq等程序都是应用层。 2,而传输控制层,网络层,链路层,物理层都是计算机内核去控制的。
客户端与服务端传输流程
大体上
1,当使用浏览器访问一个网站时,要先把与网站服务器建立连接请求发送给内核。 2,通过内核中的传输层再通过三次握手与服务器的内核建立联系。 3,应用层把请求通过内核的发送到服务器的内核中,服务器的内核再与服务器应用层交互,往返都是这样,进行数据传输。 4,当传输结束后,客户端内核中的传输层再通过四次次分手与服务器的内核断开联系。 5,整个传输完成。 至于后面的网络层,链路层,物理层就不用深究,理解传输控制层就行。
简单说下传输层
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。 举例: 传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。而对于快递如何发送通过什么方式发送,那就相当于网络层,链路层,物理层进行处理的。 对于网络层,链路层,物理层本人不了解,就不细说了,了解传输层就行,就能理解tcp三次握手,四次分手。
三次握手四次分手
这个发生在传输层。
三次握手
1,首先客户端随机使用一个端口向服务器端口发送[SYN]数据包:客户端问服务端:在工作吗? 2,客户端收到数据包后发送回一个[SYN,ACK]:服务端:在工作! 3,客户端收到后回个**[ACK]数据包:客户端:好嘞!** 这样就建立了连接。然后双方开辟个资源空间用来接收,发送数据,由socket(套接字或者四元组),进行调度。 socker:是由客户端ip+端口和服务端IP+端口组成,绝对唯一的连接,这样连接时不会产生歧义。 因为一台计算机一个网卡有65535个端口,所以理论上可以有65535种连接方式。
问题:
但明明发送两次就可以确认服务器在工作为什么要发送三次? 第一次与第二次是为了确认服务端的接受发送能力,而第二次与第三次是确认客户端的接收发送能力是否正常。 接下来就是通过http(s)进行传输数据
四次分手
当数据传输完成就会断开连接。 1,服务器->客户端发送[FIN,ACK]:分手吧。 2,客户端->服务端发送[ACK]:哼,真的分手? 3,客户端->服务端发送[FIN,ACK]:正好我也有此意,分手吧。 4,服务器->客户端发送[ACK]:行,真的分手 因为断开连接必须经过双方的同意,防止当服务端提出分手后,客户端还想传输数据。断开连接后释放资源。 ?
|