计算机网络知识(TCP连接,TCP/UDP区别,HTTP与HTTPS,Socket原理等等)

本文详细介绍了计算机网络中的TCP连接过程,包括三次握手和四次挥手,以及TCP与UDP的区别。同时,探讨了HTTP和HTTPS协议,强调了HTTPS的安全性以及HTTP的无状态特性。此外,还提到了Socket原理,用于进程间通信。
摘要由CSDN通过智能技术生成

1、网络七层协议包含,物理层、数据链路层、网络层(ip协议)、传输层(TCP传输控制协议、UDP用户数据报协议)、会话层、表示层、应用层(http协议)。是一个提供的概念架构协议。

2、TCP/IP协议,四层架构参考模型。包含链路层、网络层、传输层、应用层。TCP/IP协议是协议群的统称,其包含tcp、udp、ftp、Telnet、http等等,这些都属于TCP/IP协议

3、传输控制协议TCP是什么?

  TCP协议是传输层的协议。面向连接的、可靠的、基于字节流的传输层通信协议。将应用层的数据流分割成报文段并发送给目标节点的TCP层。数据包都有序号,对方收到则发送ack确认,未收到则重传。使用校验和来校验数据在传输过程中是否有误。

  IP协议是无连接的通信协议,不会占用两个正在通信的计算机之间的通信线路。ip降低了对网络线路的需求,每条线可以同时满足许多不同计算机之间的通信需要,通过ip消息或者其他数据会被分割为较小的独立的包,并通过internet网在计算机之间进行传送,ip负责将它的包路由到它的目的地,但是ip协议没有做数据包是否按照顺序发送,或者包是否被破坏,所以Ip数据包是不可靠的。需要由ip的上层协议做出控制。

4、何为TCP的三次握手?

  当应用程序通过tcp和另一个应用程序进行通信的时候,它会发送一个通信请求,这个请求必须被送到一个确切的地址,在双方握手之后,tcp将在两个应用之间建立一个全双工的通信,这个全双工的通信将占用两个计算机之间的通信线路,直到被一方或者双方关闭为止。全双工的含义就是计算机A可以给另一个计算机B发送信息,在发送信息的同时,而另一个计算机B也可以给计算机A回发信息。握手是为了建立连接,TCP三次握手的流程图如下所示:

4.1)、三次握手详细介绍如下所示:

  初始状态:开始状态客户端和服务器都是CLOSE关闭状态。当客户端主动打开,服务器端被动打开。刚开始的时候TCP服务器进程先创建传输控制块tcb,时刻准备接收其它进程发送过来的请求,此时服务器端进入Listen监听状态。

  1)、第一次握手:刚开始的时候TCP客户端进程也是先创建传输控制块tcb,向服务器发送连接请求报文,SYN=1,seq=x就是报文头里面tcp flags 里面的同步序号SYN=1,同时选择一个初始序号seq=x,x是任意正整数的值。此时TCP客户端进程进入了一个SYN-SENT同步已发送的状态。此时发送过去的数据包即报文段被称为SYN报文段,它是不可以携带数据的。但是会消耗掉一个序号,这便是第一次握手了。

  2)、当服务器接收到请求报文的时候,如果同意连接,会发送确认报文,确认报文中包含了TCP flags两个标志位字段SYN=1,ACK=1,确认号是ack=x+1。由于客户端发送SYN报文中的seq=x,服务器端为了回应客户端,要回应和x相关的信息,但是客户端发送SYN报文中的seq=x消耗了一个序号,因此服务器端发送的确认号便成了ack=x+1,同时为了自己的缓存初始化一个序列号即seq=y。此时服务器进入了SYN-RCVD状态即同步已收到的状态。该报文也是不可以携带数据的,并且同样需要消耗一个序号,这便是第二次握手

  3)、当TCP客户进程收到确认报文之后,还要向服务器端给出一个确认,确认报文的ACK=1。ack=y+1,因为服务器发送的报文里面seq=y,而客户端为了回应服务器端,要回应和y相关的信息,但是服务器端发送报文中的seq=y消耗了一个序号,因此客户端发送的确认号便成了ack=y+1。seq=x+1,是因为第二次握手的时候,服务器端响应客户端的时候以将ack=x+1即x序号加1,因此此时第三次握手的时候seq=x+1。此时客户端和服务器端进入ESTAB-LISHED状态即连接已建立。这便是第三次握手

4.2)、面试回答,握手是为了建立连接,TCP的三次握手流程大致如下所示:

  在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。切记,syn:同步序列编号(Synchronize Sequence Numbers)。
  1)、第一次握手:建立连接时,客户端发送SYN包(syn=x)到服务器,并进入SYN_SEND状态即同步已发送,等待服务器确认。
  2)、第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态即同步已收到。
  3)、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTAB LISHED状态即连接已建立,完成三次握手。

5、为什么需要三次握手才能建立起连接呢?

  答:为了初始化Sequence Number的初始化值。通信的双方要互相通知对方自己的初始化的Sequence Number值。即seq=x和seq=y,seq值要作为以后的数据通信的序号,以保证应用层接收到的数据不会因为网络上的传输问题而乱序,即Tcp会用这个序号进行拼接数据。因此在服务器回发它的Sequence Number即第二次握手之后还需要发送

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值