网络编程-TCP/IP协议栈-UDP/HTTP协议
UDP协议
UDP协议全称是用户数据报协议,在网络中她与TCP协议一样用于处理数据包,两个协议同处于协议栈的传输层,和TCP不同的是,UDP是一种无连接的协议栈。
因为UDP是无连接的,所以相对来说,UDP的报头比TCP要简单的多了。如下图:
UDP特点:
- 第一UDP是一个非连接的协议,传输数据之前源端口和终端不建立连接,当他想传送时就简单的去抓取来自应用城西的数据,并尽可能快的把他扔在网络上,在发送端,UDP传送数据的速递仅仅是受应用程序生成数据的速度,计算机的计算能力,和传输带宽的现在;在接受端,UDP吧每个消息段放再队列中,应用程序每次从队列中读一个消息段。
- 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一天服务器可以同时向多个客户端传输相同的消息
- UDP信息包的标题短,只有8字节,相对于TCP的20字节信息包的额外开销很小
- 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率,传输带宽,源端和终端主机性能的限制
- UDP使用尽量大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这个表中有许多参数)
- UDP是面向报文的,发送方的UDP对应应用程序交下来的报文,在添加首部后就向下交付给IP层,即不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
我们经常用PING命令来测试两台主机之间TCP/IP通信是否正常,其实PING命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的信息及时反馈回来,那么网络就是通的。
HTTP协议
- HTTP协议名为超文本传输协议。这个协议在TCP/IP协议栈的应用层,因此,我们无需关系HTTP是如何传输的,只需要看我们传输的内容,能否正确的被接收端识别。
- HTTP是基于TCP实现的,简单说来,TCP协议负责可靠的内容传输,HTTP协议负责识别内容,两者本身不在一个层面,没有可比性。
- HTTP是无状态的意思是,每一次的内容解析是没有关联的。TCP有状态是指两端在连接过程的时候是有在连接中的状态
- HTTP包含两种报文类型,请求报文,响应报文。
- 请求报文用在客户端对服务器的请求时候使用的报文格式
- 响应报文用在服务响应请求的报文格式
HTTP协议请求消息结构
- 客户端发生一个HTTP请求奥服务器的请求消息包括一下格式:请求行(request line),请求头部(header),空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
- 如上图所示HTTP消息主要包含以下实质内容(空格和换行也不能少):
- 请求方法
- URL:统一资源定位符
- HTTP请求头部
- HTTP请求体
- 以下是一个HTTP请求的例子,从Fiddler抓包工具中抓出来的一个请求案例。
//1. post:请求方法
//2. http://edu.zhenai.com/api/business/supremecourse/course.do:请求URL
//3. HTTP/1.1:HTTP协议以及版本
POST http://edu.zhenai.com/api/business/supremecourse/course.do HTTP/1.1
//以下报文头部
Cookie: token=506188.1587368100293.ef83f599f1a54833d0cc5124da98140a.test; token=506188.1587368100293.ef83f599f1a54833d0cc5124da98140a.test; sid=88TIsgom9Xqw3GMLTDv0;
User-Agent: PostmanRuntime/7.25.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 4b0c8482-cce5-40e2-a7b9-a251378c6475
Host: edu.zhenai.com
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
zone: 1027071-liaojiamin
Host: edu.zhenai.com
//以下报文体
supremeCourseID=129&allow=true
HTTP请求方法
- HTTP包含来多种不同的请求方法,每一种请求方式用在不同的场景
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定页面信息,并放回实体主体 |
2 | HEAD | 类似get请求,不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表达或者上传文件),数据被包含在请求体中,POST请求可能会操作新的资源的建立和/或已有资源的修改 |
4 | PUT | 从客户端想服务器传送的数据取代指定的文档内容 |
5 | DELETE | 请求服务器删除指定内容 |
6 | CONNECT | HTTP1.1协议中预留给能够将连接改为管道方式的代理服务器 |
7 | OPTIONS | 允许客户端查看服务器的性能 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
URL-- 统一资源定位符
- URL由三部分组成:资源类型,存放资源的主机域名,资源文件名
- URL的一般语法格式为(带括号 [ ] 的是可选项目): protocol
网络编程-TCP/IP协议栈-UDP/HTTP协议相关推荐
- 网络编程-TCP/IP协议栈-TCP协议
TCP协议 TCP协议作用 TCP协议位于协议栈的传输层.当应用层向TCP层发送用于网间传输的,用8字节表示的数据流,TCP则吧数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受到改计算机连 ...
- 网络编程-TCP/IP协议栈-IP协议
协议 协议就是约定的一种规则,例如扑克游戏中约定好的各种规则,2<3<4<5<-等,以此作为游戏规则.当所有人都遵循这个规则,那么久可以不需要任何多余的交流就可以进行游戏,这个 ...
- java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计
[JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...
- QT入门第七天 网络编程TCP/IP/UDP+Http和JSON解析+qt事件软键盘【CSDN最详细】
网络编程+Http和JSON解析+qt事件软键盘 第一章 QT中的网络编程 [1]涉及到的类 [2]tcp协议的流程 [2.1]服务器的流程 socket-->bind-->listen- ...
- WinSock API网络编程——TCP/IP协议详解
WinSock API网络编程--TCP/IP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_tcp) ...
- 网络编程--TCP/IP协议
参考:https://lijie.blog.csdn.net/article/details/105297532 https://blog.csdn.net/qq_20785973/article/d ...
- C#中开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨
我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念 1.TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基 ...
- Socket网络编程(TCP/IP/端口/类)和实例
原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Ap ...
- 网络:TCP/IP各层的协议
教程书上虽然介绍了这些协议,但是就单个协议分别介绍的,很容易忘了这个协议属于那一层,以及属于底层哪个协议. 上图TCP/IP各层的协议很多,一张图就可以记住了. 应用层协议 0. 运行 在TCP\U ...
最新文章
- 关于雅可比迭代的Python实现
- grep / egrep
- wxWidgets:wxButton类用法
- boost::sort模块实现支持不同分布的随机数生成器的测试程序
- 国产服务器芯片对比分析,影速分析:通过国内云主机评测对比国内服务器异同...
- 由HTTPS抓包引发的一系列思考(HTTPS解密)
- 加入了开源组织datawhale
- Tomcat配置监听80端口、配置虚拟主机、日志
- 关于智能制造的思考——以中航工业为例
- VS2015 自动代码补全
- 小说下载器(python)
- matlab绘制三维图形,Matlab 应用之绘制三维图形(基础篇)(组图)
- 计算机公司客户电话怎么打,企业微信公费电话怎么打多人通话【方法】
- 处nm是什么意思_nm是什么意思
- 港科资讯|沈向洋教授获委任为香港科大校董会主席
- 【PAT乙级】1103 缘分数 (20 分)
- 中断API之enable_irq
- 公众号互推还是要的,要不怎么让更多人看到可爱的我呢?
- 七大数据陷阱之油腻的统计学:千夫所指
- mysql以blob存储图片文件的存储和读取问题解决
热门文章
- Java - 强引用、弱引用、软引用、虚引用
- 计算机导论上机模拟,计算机导论模拟考试题6份完整版.doc
- 耶鲁大学计算机科学录取,2020年耶鲁大学排名TFE Times美国最佳计算机科学硕士专业排名第18...
- 第7章 C控制语句:分支和跳转
- 全地球的水也没办法将这个“特殊”的瓶子装满!
- 如果你没有时间读书,至少要保留这个习惯
- dockerfile文件名_Linux云计算教程全套视频合集:Dockerfile详解(一)
- java merge css_一句命令快速合并 JS、CSS
- python notebook右侧网页_《Python web开发》笔记 一:网页开发基础
- 修改图层的范围_【PS|第39期】数字绘画 使用填充图层
- 网络编程-TCP/IP协议栈-TCP协议