socket

Java学习:网络编程

笑着哭i 提交于 2020-02-28 14:00:26
网络编程 1.1 网络编程基础知识 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。 两类传输协议:tcp和udp TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。 UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。  

套接字(socket)

拈花ヽ惹草 提交于 2020-02-28 12:57:38
套接字(socket)是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。 建立socket连接至少需要一对套接字,一个运行在服务端,一个运行在客户端(客户端可以有多个)。 建立socket连接需要三个步骤:服务器监听,客户端请求,连接确认。 来源: CSDN 作者: 陈正跃 链接: https://blog.csdn.net/weixin_39366864/article/details/104551840

Linux 网络编程API(一):基础

旧街凉风 提交于 2020-02-28 09:55:40
Linux网络API主要分为三大类: socket地址API socket基础API 网络信息API socket地址API 大端字节序指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处, 反之小端字节序指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处 PC大多采用小端字节序,而网络字节序为大端字节序,解决方法为:发送端要把发送的数据转化成大端字节序数据后发送,而接收端知道对方传送过来的数据是大端字节序,再将其转化为小端字节序使用 Linux提供了以下四种API来进行主机字节序和网络字节序的转换 # include <netinet/in.h> unsigned long int htonl ( unsigned long int hostlong ) ; unsigned short int htons ( unsigned short int hostshort ) ; unsigned long int ntohl ( unsigned long int netlong ) ; unsigned short int ntohs ( unsigned long int netshort ) ; htonl 表示“host to network long”,即将长整型主机字节序转化为网络字节序,反之亦然 长整型通常用来转换IP地址

python实现简陋的udp通讯例子

泄露秘密 提交于 2020-02-28 07:40:16
单纯就是udp客户端发送数据一的个例子。通过连续发送信息,主要想看看服务器是否能完整收到所有信息。 import socket import time # UDP 客户端,连续发送信息。 ip = '192.168.0.112' port = 2000 addr = ( ip , port ) udpClientSocket = socket . socket ( socket . AF_INET , socket . SOCK_DGRAM ) for i in range ( 1000 ) : infoStr = "今天吃了么?" + str ( i ) msg = infoStr . encode ( 'utf-8' ) udpClientSocket . sendto ( msg , ( addr ) ) if i == 600 : time . sleep ( 3 ) for i in range ( 1000 , 2000 ) : infoStr = "今天吃啥了?" + str ( i ) msg = infoStr . encode ( 'utf-8' ) udpClientSocket . sendto ( msg , ( addr ) ) 来源: CSDN 作者: 还是没名字 链接: https://blog.csdn.net/hryjzsh/article

Socket通信原理

拟墨画扇 提交于 2020-02-28 07:37:22
什么是Socket? Socket的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。 Socket就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。而我们建立连接就像把插头插在这个插座上,创建一个Socket实例开始监听后,这个电话插座就时刻监听着消息的传入,谁拨通我这个“IP地址和端口”,我就接通谁。 实际上,Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。Socket起源于UNIX,在Unix一切皆文件的思想下,进程间通信就被冠名为文件描述符(file desciptor),Socket是一种“打开—读/写—关闭”模式的实现,服务器和客户端各自维护一个“文件”,在建立连接打开后,可以向文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。 另外我们经常说到的 Socket所在位置 如下图: Socket通信过程 Socket保证了不同计算机之间的通信,也就是网络通信。对于网站,通信模型是服务器与客户端之间的通信。两端都建立了一个Socket对象,然后通过Socket对象对数据进行传输。通常服务器处于一个无限循环,等待客户端的连接。 一图胜千言,下面是 面向连接的TCP时序图 : 客户端过程

高性能Server---Reactor模型

◇◆丶佛笑我妖孽 提交于 2020-02-28 07:30:09
转载自: http://www.jianshu.com/p/2461535c38f3 无处不在的C/S架构 在这个充斥着云的时代,我们使用的软件可以说99%都是C/S架构的! 你发邮件用的Outlook,Foxmail等 你看视频用的优酷,土豆等 你写文档用的Office365,googleDoc,Evernote等 你浏览网页用的IE,Chrome等(B/S是特殊的C/S) ...... C/S架构的软件带来的一个明显的好处就是:只要有网络,你可以在任何地方干同一件事。 例如:你在家里使用Office365编写了文档。到了公司,只要打开编辑地址就可以看到在家里编写的文档,进行展示或者继续编辑。甚至在手机上进行阅读与编辑。不再需要U盘拷来拷去了。 C/S架构可以抽象为如下模型: C就是Client(客户端),上面的B是Browser(浏览器) S就是Server(服务器): 服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务 C/S架构之所以能够流行的一个主要原因就是网速的提高以及费用的降低,特别是无线网络速度的提高。试想在2G时代,大家最多就是看看文字网页,小说什么的。看图片,那简直就是奢侈!更别说看视频了! 网速的提高,使得越来越多的人使用网络,例如:优酷,微信都是上亿用户量,更别说天猫双11的瞬间访问量了!这就对服务器有很高的要求!能够快速处理海量的用户请求

《深入剖析Tomcat》读书笔记

落爺英雄遲暮 提交于 2020-02-28 07:26:24
《深入剖析Tomcat》读书笔记 第1章 Web服务器基础 了解Http协议,Tcp/IP协议 Http协议详解 Tcp/ip详解 Socket类和ServerSocket类的区别及各种的Demo 关于Socket和ServerSocket类详解 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章 第10章 第11章 第12章 第13章 第14章 第15章 第16章 第17章 第18章 第19章 第20章 来源: oschina 链接: https://my.oschina.net/u/1769638/blog/3171007

2019-2020-1 20175203 20175206 实验五 通讯协议设计

半世苍凉 提交于 2020-02-28 06:45:11
实验五 通讯协议设计-1 任务详情 在Ubuntu中完成http://www.cnblogs.com/rocedu/p/5087623.html中的作业 提交运行结果截图 作业: 研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5 基于Socket实现TCP通信,一人实现服务器,一人实现客户端 选用合适的算法,基于混合密码系统实现对TCP通信进行机密性、完整性保护。 学有余力者,对系统进行安全性分析和改进 因为之前作业中使用过openssl,所以无需再次下载 openssl: 多用途的命令行工具,包openssl,可以执行交互或批量命令。 openssl的加密算法: OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。 OpenSSL一共实现了4种非对称加密算法,包括DH算法

socket四次挥手(CLOSE_WAIT和TIME_WAIT状态描述和处理)

我是研究僧i 提交于 2020-02-28 03:41:50
1 问题描述: 最近websocket服务程序在绑定某些固定端口失败,使用statnet -noa查看后发现,系统中残留大量CLOSE_WAIT的状态和TIME_WAIT状态的端口。从而导致在绑定监听端口时,socket失败的情况。 CLOSE_WAIT 2 原理讲解 我们知道,在socket编程中,TCP的连接和断开需要经过三次握手和四次挥手的过程。这里着重讲四次挥手。当服务器端/客户端程序主动调用closesocket端口后,主动断开方就会向被动方发送FIN信号,被动方收到FIN信号后,就进入了 CLOSE_WAIT 状态。如果一切正常,稍后被动方需要再次发出 FIN 包,进而迁移到 LAST_ACK 状态;主动方收到FIN包后,回复ACK信号,并且状态变为TIME_WAIT状态,并且等待2倍的MSL周期后,状态变为CLOSED状态;当被动断开方收到ACK信号后,状态变为CLOSED状态。 四次挥手交互图以及调用函数 以上理论,在很多的文章都有详细的描述,个人感觉 https://www.cnblogs.com/kevingrace/p/9988354.html 文章描述的很好。之所以,TCP结束要设计如此的繁复,其实和日常打电话的情况是一样的;要挂电话之前,先要问对方是否还有其他事情,没有其他事情的情况下,才能真真的做出挂电话的动作。 实现代码在附件中,

TCP/IP网络协议

隐身守侯 提交于 2020-02-27 18:56:10
TCP/IP网络协议 TCP/IP基本概念 传统的网络编程技术简介 *特别注意*: TCP/IP基本概念 1. 网络协议:网络协议简称为协议,是为进行网络数据交换而建立的规则、标准或约定 (针对不同的需求,有不同的网络协议,网络协议有很多种)。 2. 计算机网络的体系结构:计算机网络的体系结构是计算机网络的层次的划分及其各层 协议的集合。体系结构就是这个计算机网络及其部件所应完成的功能的精确定义。 3.三种计算机网络的体系结构 ( 1 )应用层:该层负责应用程序之间的沟通。 主要协议有简单邮件传输协议 ( SMTP ) 、文件传输协议 ( FTP ) 、以及网络远程访问协议 ( Telnet ) 等。 ( 2 )传输层:该层提供应用程序之间的通信服务,主要功能是数据格式化、数据确认和 丢失重传等。给数据包加入传输数据并把它传输到下一层中。 主要协议:传输控制协议 ( TCP ) 、用户数据报协议 ( UDP ) . 端口号:用于区分不同的应用程序。 ( 3 )网际层:主要功能是把数据报通过最佳路径送到目的端,但它不检查数据包是否 被正确接收。 网际层的核心协议—— IP ,提供了无连接的数据报传输服务(不保证送达,不保序)。 其他重要协议: ICNP , ARP IP 地址:用于表示网络中的不同主机和设备。 ( 4 )网络接口层:负责数据的实际传送,在发送端将上层的 IP