浅谈TCP/IP协议

  • TCP/IP协议就是一种用来约束网络间信息传输的协议。http协议就是基于TCP/IP协议之上的一种请求/响应协议。我们在前端中经常遇到关于get和post请求方式的问题,而这两种请求方式其实都是基于TCP/IP协议的。今天就来讲讲TCP/IP协议的基础知识(post和get请求方式的区别以及其他的请求方式比如:option,之后会专门写一篇文章总结)

  • 先讲TCP/IP协议中比较有代表性的协议:TCP VS UDP
    TCP:TCP 是面向连接的、可靠的流协议。也就是说,TCP在信息传输前必须先建立连接,比如三次握手就能为客户端和服务端建立起可靠的连接。而基于这种可靠的连接就能赋予了TCP很多能力比如:重发控制,流控制。而这种按流传递的协议也能保证信息的无重复,按顺序,无差错等优点。总之就是俩字:可靠。对于那些对可靠性要求高的比如重要文件传输等就需要使用TCP协议了。
    UDP: UDP是面向数据报方式。UDP也没有TCP那种三次握手的方式来保证信息传输的可靠性。那既然传输信息不可靠我们为什么还要用UDP呢?因为他不堵啊,没有了三次握手的机制意味着我可以想啥时候传就啥时候传,而不用像TCP那样先建立连接,商量好以后再传输,某段信息出了问题也不会像TCP那样通过重传等机制来纠正后再继续传后续的信息。比如实时性高的应用QQ视频,想象一下你们每次开会的时候总是会说一大堆的废话,这些废话听不清或者干脆丢包其实对会议也没啥影响,如果要是像TCP一样非得每一个标点符号都得完完全全的传输过来,遇见网络不好的情况一个小时的废话就卡成2个小时了。

  • 然后讲讲比较关键的三次握手和四次挥手(理解了这个就明白TCP为什么可靠了)
    三次握手(废话不多说先上图)

    三次握手

    其实图上文字叙述已经很清楚了,大致过程我总结下
    C先和S说:我要和你建立个连接然后给你传点东西了。
    S回复C:好的我知道了,你可以开始传送了。
    C再回复S:好的我知道了,你可以开始接收了。(C在这次回复发出后便做好了准备并开始发送信息,S在收到这次回复后也做好了准备开始接收信息)
    之前看到个很有意思的例子大家可以看下https://blog.csdn.net/tennysonsky/article/details/45622395

    四次挥手
    四次挥手.png

    其实四次挥手比三次握手好理解,就是为了释放网络资源,C端和S端都要告诉对方我要关闭连接了,然后在对方知道自己要关闭了并做出反应后再关闭自己。
    例子还是参考上文的连接。

最后总结下吧:
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容