tcp协议

java中TCP、UDP的简单网络编程

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-08 17:39:57
文章目录 一、有关网络编程概念 二、TCP网络编程 2.1 TCP网络编程的客户端 2.2 TCP网络编程的服务端 三、UDP网络编程 3.1 UDP发送端 3.2 UDP的接收方 一、有关网络编程概念 传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字是(210.37.145.1:23)。 总之,套接字Socket=(IP地址:端口号)。 有关网络编程中的API: java.net包下的InetAddress类:此类表示互联网协议(IP)地址。 (1)InetAddress getLocalHost() 域名:www.baidu.com 因为IP地址的数字较长,不方便记忆。所以设计了域名,来与IP地址对应。 由域名解析器(DNS)来解析对应关系。InetAddress getByName(xx) 来获取主机名和ip地址 二、TCP网络编程 2.1 TCP网络编程的客户端 TCP网络编程的客户端: 1

WebSocket、Socket、TCP、HTTP区别

会有一股神秘感。 提交于 2020-03-08 14:33:28
1. 概述 WebSocket 是为了满足基于 Web 的日益增长的实时通信需求而产生的。在传统的 Web 中,要实现实时通信,通用的方式是采用 HTTP 协议不断发送请求。但这种方式即浪费带宽(HTTP HEAD 是比较大的),又消耗服务器 CPU 占用(没有信息也要接受请求)。(下图来自 WebSocket.org ) 而是用 WebSocket 技术,则会大幅降低上面提到的消耗:(下图来自 websocket.org ) 关于更详细的描述,尹立的这篇文章讲得非常好: WebSocket(2)–为什么引入WebSocket协议 。 那么,WebSocket 到底与 HTTP 协议到底是一个什么样的关系呢?它和 Socket 又有什么联系?这就要讲到 OSI 模型和 TCP/IP 协议族。 2. OSI 模型与 TCP/IP 以下是 维基百科 中关于OSI 模型的说明: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,ISO/IEC 7498-1),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织(ISO)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。 而 TCP/IP 协议可以看做是对 OSI 模型的一种简化(以下内容来自 维基百科 ):

TCP协议中的确认应答机制和超时重传机制

巧了我就是萌 提交于 2020-03-08 06:45:54
1. 确认应答机制 在TCP协议中,发送端将数据发送到接收端,接收端会自动返回一个ACK的应答,告诉发送端我已经接收到数据。TCP会给每个字节的数据赋予序列号,每一个ACK应答都会携带对应的确认序号,也就是字段中的32位确认号,这个确认号用来告诉发送端,你的数据发送到哪里,你下一次发送应该从哪里开始。比如发送端先发送了1 - 1000 的数据到接收端,接收端再返回一个ACK响应,此时携带的确认号就是1001,意思就是我已经接收到1001以前的所有数据,你下次应该从1001继续发送。 2. 超时重传机制 发生场景 由于TCP存在一个确认应答机制,所以每次发送端发送一个数据之后,都应该收到一个ACK应答,如果没有收到,发送端就需要重新发送数据。发送端没有接收到ACK应答有可能是发送时网络拥堵没有发送出去,但也有可能对端发送来的ACK在中途丢失了,这样的话就会导致发送端重新发送重复的数据到接收端。这时TCP协议报中的序列号就起到了至关重要的作用,接收端在接收到数据之后,通过核对序列号可以起到一个去重的效果。 超时时间 为了网络传输的效率,TCP肯定希望找到一个最小的时间来确保在这个时间内能够收到ACK应答。但由于网络环境的影响,时间太长效率会低,时间太多又会导致发送重复的数据包。所以TCP就会动态来计算这个最大超时时间。在Linux等一些系统中

Linux

痴心易碎 提交于 2020-03-07 17:46:01
Linux网络安全-防火墙 >防火墙 > 1. iptables 四表五链 2. iptables 语法详解 3. 替换规则 4. 场景练习 5. 其他 1. iptables 四表五链 raw表 确定是否对该表进行状态跟踪 mangle表 为数据包设置标记, 修改数据包,改变包头中内容(TTL, TOS, MARK) nat表 修改数据包中的源,目标ip地址或端口。 地址转发。 filter表 确定是否放行数据包(过滤). 访问控制。 规则匹配。 INPUT OUTPUT FORWARD POSTROUTING PREROUTING 2. iptables 语法详解 iptables 【-t 表名]】管理选项 【链名】【条件匹配】 【-j 目标动作或跳转】 iptables 规则组成: 数据包访问控制: ACCEPT, DROP, REJECT 数据包改写:SNAT, DNAT 信息记录: LOG iptables -t 表 动作 链名 匹配条件 目标动作(跳转) 所有源,目标禁用 ping: iptables -t filter -A INPUT -p icmp -j DROP 删除刚刚的规则: iptables -t filter -D INPUT -p icmp -j DROP # 删除单条(笨方法) sudo iptables -L -n --line-numbers #

python之socket编程(一)

元气小坏坏 提交于 2020-03-07 12:50:23
socket之前我们先来熟悉回忆几个知识点。 OSI七层模型 OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。(from百度) TCP/IP四层参考模型 由于OSI七层较为庞大,所以由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。 以下图片TCP/IP四层与OSI七层的区别,是百度上找的图片,大家迁就看: 他们的对应网络协议如下: 今天我们说的socket就在传输层。 TCP/IP三次握手建立连接 TCP/IP四次挥手关闭连接 接着我们来看下在TCP/IP四层中数据之间的一些关系吧: TCP/IP解释 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,定义了电子设备如何连入因特网,以及数据如何在它们之间 传输的标准。 python中socket编程 上面一balabala一堆废话,无非想引出来socket这个东西,那么这个socket是个什么鬼呢?socket是TCP/IP中传输层中TCP、UDP的实现方式,用socket编程,可以实现TCP UDP的通信

python学习笔记10 ----网络编程

感情迁移 提交于 2020-03-07 12:47:29
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂。网络体系结构解决互质性问题彩是分层方法。 1. 网络(OSI)的7层模型: 应用层--->为应用程序提供网络通信服务 表示层--->数据表示 会话层--->主机间通信(两个应用进程间) 传输层--->端到端的连接,隔离网络的上下层协议,使得网络应用与下层协议无关 网络层--->寻找最优路径,转发数据包 数据链路层--->无差错的链路连接 物理层--->二进制传输 2. 端口   是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。与协议有关。 3. 套接字存在于通信区域中。   通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起。   为保证数据的正确性,在网络协议中需要制定网络字节顺序,采用统一的网络字节顺序。 网络通信三要素:   IP地址:用于表示主机(IP地址 = 网络ID+主机ID)   端口号:用于标识进程的逻辑端口   传输协议:TCP UDP 网络通信过程就是一个不断封装和解析的过程 Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定操作与驱动程序建立关系。 套接字   套接字是为特定网络协议(例如TCP/IP,ICMP/IP

计算机网络

旧巷老猫 提交于 2020-03-07 07:25:06
HTTPS和HTTP的区别主要如下: 1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 SSL四次握手的过程 1.客户端请求建立SSL链接,并向服务端发送一个随机数(client random),压缩方式和客户端支持的加密方法(比如RSA),此时是明文传输的。 2.服务端选择客户端支持的一种加密算法并生成另一个随机数(server random),并将授信的服务端证书和公钥下发给客户端。 3.客户端收到服务端的回复,会校验服务端证书的合法性,若合法,则生成一个新的随机数premaster secret并通过服务端下发的公钥及加密方法进行加密,然后发送给服务端。 4.服务端收到客户端的回复,利用已知的加解密方式进行解密,同时利用client random、server random和premater secret通过一定算法生成对称加密key - session key。 此后,数据传输即通过对称加密方式进行加密传输。

速读原著-TCP/IP(采用UDP的路径MTU发现)

风格不统一 提交于 2020-03-07 05:18:42
第11章 UDP:用户数据报协议 11.8 采用UDP的路径MTU发现 下面对使用U D P的应用程序与路径 M T U发现机制之间的交互作用进行研究。看一看如果应用程序写了一个对于一些中间链路来说太长的数据报时会发生什么情况。 例子 由于我们所使用的支持路径 M T U发现机制的唯一系统就是Solaris 2.x,因此,将采用它作为源站发送一份6 5 0字节数据报经s l i p。由于s l i p主机位于M T U为2 9 6的S L I P链路后,因此,任何长于2 6 8字节(2 9 6-2 0-8)且“不分片”比特置为 1的U D P数据都会使b s d i路由器产生I C M P“不能分片”差错报文。图 11 - 1 3给出了拓扑结构和M T U。 可以用下面的命令行来产生 6 5 0字节U D P数据报,每两个U D P数据报之间的间隔是5秒: solaris % sock -u -i -n10 -w650 -p5 slip discard 图11 - 1 4是t c p d u m p的输出结果。在运行这个例子时,将b s d i设置成在I C M P“不能分片”差错中,不返回下一跳M T U信息。 在发送的第一个数据报中将 D F比特置1(第1行),其结果是从b s d i路由器发回我们可以猜测的结果(第 2行)。令人不解的是,发送一个 D F比特置1的数据报(第

TCP/IP 3数据链路

我怕爱的太早我们不能终老 提交于 2020-03-07 03:37:52
TCP/IP的具体数据链路:以太网、无线局域网、PPP等。 3.1 数据链路层的作用 数据链路层的协议定义了通过通信媒介互联的设备之间传输的规范。通信媒介包括各种电缆、光纤、电波以及红外线等介质。此外,各个设备之间有时也会通过交换机、网桥、中继器等中转数据。 计算机以二进制0、1来表示信息,实际的通信媒介之间处理的是电压的高低、光的闪灭以及电波的强弱等信号。把这些信号与二进制的0、1进行转换正是物理层的责任。 数据链路层处理的数据也不是单纯的0、1序列,该层把它们集合为一个叫做“帧”的块,然后再进行传输。 数据链路层相关技术:MAC寻址(物理寻址)、介质共享、非公有网络、分组交换、环路检测、VLAN(虚拟局域网)等。 数据链路的传输方式:以太网、WLAN(无限局域网)、PPP(点对点协议)。 网络拓扑:网络的连接和构成的形态称为网络拓扑topology。总线型、环型、星型和混合型。 3.2 数据链路相关技术 3.2.1 MAC地址 MAC地址用于识别数据链路中互联的节点。在以太网、无线LAN、蓝牙等设备也是用相同规格的MAC地址。 MAC地址长是48比特。MAC地址一般被烧入网卡的ROM中。 3.2.2 共享介质型网络 从通信介质的使用方法上看,网络可分为共享介质型和非共享介质型。 共享介质型网络指由多个设备共享一个通信介质的一种网络。在这种方式下

访问一个网页的全过程

半腔热情 提交于 2020-03-07 02:59:55
访问一个网页的全过程 原创toumingren527 最后发布于2017-12-08 18:03:35 阅读数 33418 收藏 展开 引言 打开浏览器,在地址栏输入URL,回车,出现网页内容。整个过程发生了什么?其中的原理是什么?以下进行整理和总结。 整个过程可以概括为几下几个部分: 域名解析成IP地址; 与目的主机进行TCP连接(三次握手); 发送与收取数据(浏览器与目的主机开始HTTP访问过程); 与目的主机断开TCP连接(四次挥手); 正文 下面详细介绍其中的原理: 域名解析成IP地址 访问目标地址有两种方式: ①使用目标IP地址访问。由于IP地址是一堆数字不方便记忆,于是有了域名这种字符型标识。 ②使用域名访问。域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器完成。 DNS域名解析时用的是UDP协议。整个域名解析的过程如下: 浏览器向本机DNS模块发出DNS请求,DNS模块生成相关的DNS报文; DNS模块将生成的DNS报文传递给传输层的UDP协议单元; UDP协议单元将该数据封装成UDP数据报,传递给网络层的IP协议单元; IP协议单元将该数据封装成IP数据包,其目的IP地址为DNS服务器的IP地址; 封装好的IP数据包将传递给数据链路层的协议单元进行发送; 发送时在ARP缓存中查询相关数据,如果没有,就发送ARP广播(包含待查询的IP地址