网络模型:HTTTP、TCP、UDP简介
简介
TCP、UDP的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高要求的通信或广播通信。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少。
HTTP与TCP的区别和联系
1. HTTP协议与TCP/IP协议的关系
HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。
IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP协议是可靠的、面向连接的。
HTTP负责传输数据
2. 如何理解HTTP协议是无状态的
HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。
HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
3. 什么是长连接、短连接?
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
4.Https和Http的区别
https协议需要到CA申请证书。
http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
网络模型
OSI模型(开放式系统互联),它是由国际标准化组织(ISO)提出的
TCP/IP系列协议
TCP/IP(Transmission Control Protocol/Internet Protocol)不只是TCP/IP两个协议,而是有很多个协议组成,并且是在不同的层,是互联网的基础通信架构。
一个http请求浏览:应用层HTTP -> 传输层TCP -> 网络层IP(数据包)、 ICMP(确保源地址和目的地址之间是网络通)、IGMP(本地路由器和英特网的路由器联通) ->链路层
直接使用网络层协议的应用:ping命令,ICMP协议
TCP的3次握手协议
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
TCP的4次挥手协议
TCP中是怎么四次。
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
TCP的通讯原理
“阻塞模式”:如果接收端,当然接收端缓冲区为空的时候,调用Socket的read方法的线程会阻塞,阻塞到有数据进入接收缓冲区;另外对于写数据到Socket中的线程来说,如果待发送的数据长度大于发送缓冲区空余长度,则会阻塞在write方法上,等待发送缓冲区的报文被发送到网络上,所以呢这个就是TCP的阻塞。
滑动窗口协议
发送方和接收方都会维护一个数据帧的序列,这个序列被称作窗口。发送方的窗口大小由接收方确认,目的是控制发送速度,以免接收方的缓存不够大导致溢出,同时控制流量也可以避免网络拥塞
HTTP协议
URI是请求的资源,URL是你请求的资源的地址也就是地址路径
Tcp协议
Http协议介绍
UDP协议
网络模型:HTTTP、TCP、UDP简介相关推荐
- TCP/UDP报文格式及各种通信机制简介
TCP/UDP报文格式及各种通信机制简介 一.UDP报文 二.TCP报文 三.TCP通信机制 1,确认应答机制 2,超时重传机制 3,滑动窗口及快重传机制 4,流量控制 5,拥塞控制及慢启动机制 6, ...
- C#Socket编程详解(一)TCP与UDP简介
一.TCP与UDP(转载) 1.TCP 1.1 定义 TCP(TransmissionControl Protocol)传输控制协议. 是一种可靠的.面向连接的协议(eg:打电话).传输效率低全双工通 ...
- 【转】C#Socket编程详解(一)TCP与UDP简介
一.TCP与UDP 1.TCP 1.1 定义 TCP(TransmissionControl Protocol)传输控制协议. 是一种可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送 ...
- 【socket】从计算机网络基础到socket编程——Windows Linux C语言 + Python实现(TCP+UDP)
一.部分基础知识 1.1 计算机网络的体系结构 1.11 互联网简介 1.12 计算机网络的分类 1.13 协议与网络的分层体系结构 ▶ 协议 ▶ 网络的分层体系结构 1.14 OSI 七层模型(重要 ...
- OSI七层网络模型与TCP/IP四层模型介绍
1.OSI七层网络模型介绍 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了 ...
- 【Java 网络编程】UDP 简介
文章目录 I UDP 简介 II UDP 不可靠性 III UDP 作用 IV UDP 报文头 V UDP 数据包长度 I UDP 简介 1. UDP : User Datagram Protocol ...
- 【Java 网络编程】Socket TCP UDP 联系
文章目录 I 信息传输关注点 II Socket 与 TCP UDP 关系 III Socket 连接组成 ( IP地址 + 端口号 ) IV Socket TCP V Socket UDP VI C ...
- Java TCP 编程简介
一.TCP 协议简介 http://blog.csdn.net/nvd11/article/details/40954043 之前的博文简单介绍了网络编程中的UDP协议 其实更常用的网络协议是TCP协 ...
- OSI七层网络模型与TCP/IP五层网络模型
OSI七层网络模型 面试过程中提问的少,记住层结构的划分与每层的主要功能即可. 功能 设备 对应的TCP/IP协议 应用层 用户接口,运行各种应用程序 网关 TFTP, HTTP, FTP, SMTP ...
- 一文入门网络编程:常见协议、通信过程、Socket、CS/BS、TCP/UDP
网络编程三要素:ip地址.端口.协议,在网络通信协议下,不同计算机上运行的程序,可以进行数据传输 常见协议: 传输层 常见协议有TCP/UDP协议. 应用层 常见的协议有HTTP协议,FTP协议. 网 ...
最新文章
- push to origin/master was rejected错误解决方案(IDEA)
- mro python_Python新式类的方法解析顺序MRO与Super
- C++_类和对象_对象特性_静态成员函数---C++语言工作笔记047
- 用VBA统计涂色单元格的信息
- Apache常见报错问题
- MySQL时区错误导致server time zone value 'Öйú±ê׼ʱ¼ä' 错误
- OI、ACM大佬楼天城的回忆录
- KT148A电子语音芯片ic方案适用的场景以及常见产品类型
- userscript ajax,在Greasemonkey的userscript文本追加到一个表单时使用Ajax提交
- linux双系统无u盘安装教程视频教程,window 与Linux Mint 双系统U盘安装方法
- python模拟预测孩子身高代码_C语言 已知父母身高预测孩子身高程序 求帮找错
- 经典例题:编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他字符号的字符数。
- AI实时上色工具的使用方法
- 2022年更新宠物 鼠 鱼 十二生肖 宠物养殖系统区块源码
- 10个非常适合菜鸟练手的Python项目,墙裂建议收藏!
- /etc/shadow(影子文件)内容详解
- mars3d学习-方量分析
- 华为云搭建web服务器(WordPress)
- 如何强制删除文件夹?这样操作就能搞定!
- 云端液位数据的由来与变送器的使用