TCP/IP通信协议

1. http请求过程


当服务器接受到一个以太网数据帧时,数据就会开始从协议底层向上解析,同时会截取掉对应层的报文头部信息。同时会检查报文头的协议标识,以便确认上层协议类型。

 

2. 什么是IP协议和TCP/UDP协议

什么是协议

协议相当于两个需要通信的程序预设的一种约定,它规定了报文的交换方式和意义。比如HTTP协议为为了解决服务器之间超文本对象传递的问题

IP协议

IP协议是TCP/IP或者UDP/IP协议族的核心协议,其提供数据报文服务,每组分组报文都是由网络独立处理和分发。它为上层协议提供无状态、无连接、不可靠的服务;所以可能会发生报文丢失,顺序错乱,重复发送等问题。ip协议层之上就提供了两种TCP/UDP协议以便解决不同的需求

UDP/IP协议

UDP协议比较简单,实现容易,它仅简单的扩展了IP协议的数据报文服务,使其能够在应用程序之间通信,而不是在主机之间通信;但它没有确认机制, 数据包一旦发出,无法知道对方是否收到,因此可靠性较差

TCP/IP协议

传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。

 

3. TCP是如何保证传输的可靠

TCP 协议在 UDP 基础之上建立了三次握手的确认机制,也就是说,在正式收发数据前,必须和对方建立可靠的连接。所谓的三次握手就是在建立tcp连接时,需要客户端和服务端总共发送3次数据包来确认连接的建立。

tcp三次握手与四次挥手

所谓的tcp三次握手是指在使用tcp建立通信时,通信双方总共需要发送三个确认数据包来确认连接的建立

tcp四次挥手就是指当断开一个tcp连接时需要通信双发送四个确认包来确认连接断开。

具体概念参考TCP/IP四层模型——应用层与传输层详解

经过三次对话之后,主机A才会向主机B发送正式数据,而UDP是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发过去了。所以 TCP 能够保证数据包在传输过程中不被丢失

流量控制和滑动窗口

建立可靠连接后,就可以开始数据传输了。在传输过程中如果发送接收方来不及接受的情况,这时候就需要发送方进行主动控制以免数据丢失。利用滑动窗口机制可以方便的在TCP连接上进行发送方的流量控制。

滑动窗口是一种流量控制技术。其基本概念是在发送方和接收方维护一个数据帧的序列,这个序列就是滑动窗口。具体过程参考解析TCP之滑动窗口(动画演示)

4. tcp/udp协议在应用层的使用

在java中基于socket和DatagramSocket进行通信。Socket使用的tcp连接,需要先连接之后才能发送数据;DatagramSocket使用的UDP连接,客户端不需要先连接数据,可以直接发送给指定服务端。具体代码实现参考Socket和DatagramSocket的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值