HTTP HTTPS TCP/IP UDP

本文深入解析HTTP(超文本传输协议)与TCP(传输控制协议)的工作原理,对比HTTP与HTTPS的区别,阐述TCP的三次握手与四次断开过程,以及TCP与UDP的主要差异。涵盖了协议的连接方式、数据传输特点、安全机制等方面。

参考:http://blog.163.com/fighting_fo_rever/blog/static/16340766220144239110488/

 

HTTP:超文本传输协议(HyperText Transfer Protocol)是一种无状态协议,就是说客户端发送一次请求,服务器端接收请求,经过处理返回给客户端信息,然后客户端和服务器端的链接就断开了,为了维护他们之间的链接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息,有2中解决方案,一是在客户端保存,二是在服务器端保存。

1.在客户端保存:Cookie

2.在服务器端保存:Session(session需要依靠cookie来实现)

3.在用户禁用cookie的限制下,只能使用URL重写的方式在每次请求之后附上一个键值对来保存客户端的信息。

4.隐藏表单。<input type="hidden" name="method" value="login">

请求/相应:HttpServletRequest  /   HttpServletResponse

弊端:服务端不会主动向客户端发送问题。

 

HTTPS:(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

 

HTTP与HTTPS的区别:

ttp和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的,... 

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议  要比http协议安全

 

TCP/IP:

TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。

TCP/IP协议集包括应用层,传输层,网络层,网络访问层。

其中【应用层】包括:

超文本传输协议(HTTP):万维网的基本协议.   

文件传输(TFTP简单文件传输协议):   

远程登录(Telnet),提供远程访问其它主机功能,它允许用户登录     

internet主机,并在这台主机上执行命令.    

网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等. 

域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址. 

其次【网络层】包括:    

Internet协议(IP)     

Internet控制信息协议(ICMP)    

地址解析协议(ARP)    

反向地址解析协议(RARP)  

【网络访问层】又称作主机到网络层(host-to-network).网络访问层的功能包括IP地址与物理地址硬件的映射,以及将IP封装成帧.基于不同硬件类型的网络接口,网络访问层定义了和物理介质的连接.

 

TCP:(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

详细点说就是:(文章部分转载http://zhangjiangxing-gmail-com.iteye.com,主要是这个人讲解得很到位,的确很容易使人理解!)

TCP三次握手过程

1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,

主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.

2 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:

我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我

3 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了

这样3次握手就完成了,主机A和主机B 就可以传输数据了.

3次握手的特点

没有应用层的数据

SYN这个标志位只有在TCP建产连接时才会被置1

握手完成后SYN标志位被置0

 

TCP建立连接要进行3次握手,而断开连接要进行4次

 

1 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求

2  主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1

3 由B 端再提出反方向的关闭请求,将FIN置1

4 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.

由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端

和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础

名词解释

ACK  TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段

都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.

SYN  同步序列号,TCP建立连接时将这个位置1

FIN  发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1

TCP的包头结构:

源端口 16位

目标端口 16位

序列号 32位

回应序号 32位

TCP头长度 4位

reserved 6位

控制代码 6位

窗口大小 16位

偏移量 16位

校验和 16位

选项  32位(可选)

这样我们得出了TCP包头的最小长度,为20字节。

 

UDP:(User Data Protocol,用户数据报协议)

(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。

(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。

(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。

(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

UDP的包头结构:

源端口 16位

目的端口 16位

长度 16位

校验和 16位

 

TCP与UDP区别:

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

<think>好的,用户想了解TCP/IPUDP/IP协议栈的详细解释。首先,我需要整理已有的引用内容,看看里面有没有相关的内容。引用1提到TCP/IP协议栈的结构,三次握手,四次挥手,还有UDP和TCP的比较。引用2也讲了TCP/IP的结构和应用。引用3同样概述了TCP/IP的重要性。引用4提到C语言中的网络编程,可能涉及协议栈的实现。引用5详细说明了TCP/IP的四层模型,各层的功能,特别是在嵌入式Linux中的应用。 用户还提到了UDP/IP协议栈,但根据引用内容,可能没有直接提到UDP/IP,因为通常UDPTCP/IP协议栈的一部分,属于传输层。所以需要解释UDPTCP/IP协议栈中的位置,以及和TCP的区别。要确保正确区分UDP和TCP的不同之处,比如连接性、可靠性、流量控制等。 另外,用户可能混淆了UDP/IP协议栈的说法,因为UDP本身是TCP/IP协议栈中的传输层协议,不存在独立的UDP/IP协议栈。需要澄清这一点,避免误解。需要明确说明TCP/IP协议栈包括网络层(IP)和传输层(TCP/UDP),而UDP是其中的一部分。 接下来,根据引用内容的结构,分层次解释TCP/IP协议栈,然后单独讲解UDP的特点,以及和TCP的对比。需要引用相关的引用来源,比如引用1对比了UDP和TCP,引用5说明了四层结构。需要确保回答结构清晰,分点说明,可能用标题分隔。 还需要注意用户是否可能想了解UDP的应用场景,比如实时应用、DNS等,这可能需要结合引用中的信息进行补充。同时,检查是否有关于UDP头部结构的信息,但引用中没有提到,可能需要避免深入技术细节,保持概述层面的解释。 最后,生成相关问题时要涵盖用户可能的后续疑问,比如协议栈各层的作用,TCP和UDP的区别,应用场景,以及性能优化等。确保问题与回答内容相关,帮助用户深入理解。</think>### TCP/IP协议栈详解 #### 一、分层结构与核心功能 TCP/IP协议栈采用四层模型(链路层、网络层、传输层、应用层),是互联网通信的基础架构[^5]: 1. **链路层**(如以太网协议) - 负责物理介质上的数据帧传输 - 定义MAC地址和硬件接口规范 2. **网络层**(IP协议) - 实现主机到主机的通信 - 通过IP地址寻址和路由选择 - 核心协议:IPv4/IPv6、ICMP、ARP 3. **传输层**(TCP/UDP) - 提供端到端的数据传输服务 - TCP:面向连接、可靠传输(三次握手建立连接,四次挥手释放连接[^1]) - UDP:无连接、低延迟传输 4. **应用层**(HTTP/FTP/DNS等) - 直接面向用户应用程序 - 实现具体业务逻辑的数据交互 #### 二、TCP协议特性 - **可靠性保证**:通过序列号、确认应答、超时重传机制实现 - **流量控制**:滑动窗口机制动态调整发送速率 - **拥塞控制**:慢启动、拥塞避免、快速恢复算法[^3] - **连接管理**: ```text 三次握手过程: 1. SYN=1, seq=x 2. SYN=1, ACK=1, seq=y, ack=x+1 3. ACK=1, seq=x+1, ack=y+1 ``` 四次挥手保证数据完整性传输[^2] #### 三、UDP协议特性 - **无连接传输**:无需建立连接即可发送数据 - **最小开销**:8字节固定头部结构 ```text UDP头部格式: | 源端口(16bit) | 目的端口(16bit) | | 长度(16bit) | 校验和(16bit) | ``` - **适用场景**:实时视频流、DNS查询、在线游戏等低延迟需求场景[^1] #### 四、TCP与UDP对比 | 特性 | TCP | UDP | |--------------|----------------------|----------------------| | 连接性 | 面向连接 | 无连接 | | 可靠性 | 数据完整传输 | 可能丢包 | | 流量控制 | 滑动窗口机制 | 无控制 | | 传输效率 | 较低(协议开销大) | 较高 | | 头部大小 | 20-60字节 | 8字节固定 | | 应用场景 | 文件传输、网页浏览 | 实时通信、广播 | #### 五、协议栈实现原理 在操作系统层面,协议栈通过分层处理实现网络通信: ```c // 示例:C语言创建TCP socket int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serv_addr = { .sin_family = AF_INET, .sin_port = htons(8080), .sin_addr.s_addr = inet_addr("192.168.1.100") }; connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));[^4] ``` 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值