TCP/IP解析

TCP:属于运输层,IP:属于网络层
IP层只提供无连接,尽最大能力交付的数据服务。如果要保证可靠数据传输,就需要传输层的TCP协议来维护(比如差错处理,流量控制等)。TCP/IP中网络层IP提供的是数据报服务。运输层向应用层提供通信服务。IP层虽然能够将数据发送到目的主机,但是只是停留在网络层而没有交付给主机中的应用进程,TCP就提供应用进程之间的逻辑通信。
TCP建立:
客户端A和服务器B最初状态都是关闭的,注意,客户端主动打开连接,服务器被动打开连接。
TCP建立要使用三次握手
预备:握手之前,服务器处于监听状态;
第一次:客户端发送请求报文,请求服务器连接
第二次:服务器接收到请求报文以后,若同意连接,就想客户端发送确认信号。
第三次:客户端收到确认信号以后,要向服务器发送确认信号,此时,客户端就进入连接状态,服务器收到确认信号以后也进入连接状态,这样就连接好了(此时可以携带数据)。
进行第三次连接的原因:防止已经失效的报文段突然又传送到了服务器端,导致产生的错误。例如:A发送的请求报文在网络中滞后没有发送到服务器,此时A又发送一个请求报文段,B收到以后建立连接,传输数据以后释放连接,此时网络中滞后的请求报文达到B,如果不采用三次连接,B发送确认以后就又建立了连接,这就会出现错误。采用三次连接后,由于A在这种情况下并没有发送确认报文段,B由于收不到确认报文段,就知道A并没有发送连接请求,就忽略。
TCP释放:
初始状态:客户端和服务器都处于建立状态。
TCP释放需要四次握手:
第一次:客户端应用进程发送释放连接报文段,并停止发送数据,主动关闭TCP连接,这时A处于终止等待1状态,等待B的确认;
第二次:B收到连接释放报文段以后发出确认报文,此时B就处于关闭等待状态,A到B方向的连接就释放了,TCP处于半关闭状态。A不发送数据,若B发送数据,A仍接收。(只是单方向连接释放了)
第三次:A收到确认报文后进入终止等待2状态,等待B发出连接释放报文,此时B发出连接释放报文,此时B进入最后确认状态,等待A的确认。
第四次:A收到B的连接释放报文后,A发出确认(并没有发送数据)报文。进入时间等待状态,此时TCP连接还没有释放掉,必须经过时间等待计时器设置的时间后,A才关闭连接,随后TCP这次连接就被关闭。
可以看成是两个两次握手
UDP是基于面向消息的协议,即发送端只能一条消息一条消息的发送,而接收端不论缓冲区有多大,所有消息都放到了接收端的缓冲区内以后,还是要一条消息一条消息的读取。(缓冲区的大小是在程序中自己定义的,例如:大小定位 char temp[4096])。
TCP是基于流协议:即发送端可以将多条消息一起发送,这就取决于网络带宽等。接收端中缓冲区有多少内容,接收端进程就可以一次性读取多少内容,没有消息限制。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值