计算机网络

TCP/IP 协议栈初识

白昼怎懂夜的黑 提交于 2020-03-30 14:02:42
原文: 深入浅出 TCP/IP 协议栈 0. 简介   TCP/IP 协议栈是网络通信中一系列网络协议的综合,是核心骨架。它定义了电子设备接入因特网、以及数据在它们之间的传输方式,是一份标准。TCP/IP 协议采用 4 层结构,分别是 应用层、传输层、网络层和链路层 ,每一层都呼叫它的下一层所提供的协议来完成自己的需求。我们大部分的工作是在看得见摸得着的应用层上,所以下层的事情不用太操心;其次网络协议本身是体系复杂庞大,想要精通需要花费大量时间经历,但这不妨碍简单探索一下 一个主机上的数据要经过哪些过程才能发送到对方的主机上 。 0.5 物理介质   物理介质的重要性不言而喻,就是通过光纤、双绞线、无线电波等物理手段把电脑连接起来,电信号(0和1)在其中传输。物理介质的不同决定了电信号的出传输带宽、速率、传输距离以及抗干扰性等等。   TCP/IP 协议栈分为四层,每一层都由特定的协议与对方进行通信,协议之间的通信最终会被转化成 0、1电信号通过物理介质传输才能到达对方电脑。   下图是一张 TCP/IP 协议的基本框架:   每当通过 http 发起一个请求的时候,应用层、传输层、网络层和链路层的相关协议依次对该请求进行包装并携带对应的 首部 ,最终在链路层生成 以太网数据包 ,以太网数据包通过物理介质传输给对方主机,对方接收到数据包以后,然后再一层一层采用对应的协议进行拆包

计算机网络面试题(三)

假如想象 提交于 2020-03-30 13:42:41
计算机网络之传输层 ● 请你说明一下,TCP协议的4次握手。 考察点:TCP协议 参考回答: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。 TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。 (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。 (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。 (3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。 (4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。 ● 谈一下,为什么tcp为什么要建立连接? 考察点:TCP 参考回答: 保证可靠传输。 ● 请你解释一下TCP为什么可靠一些 考察点:TCP 参考回答: 三次握手,超时重传,滑动窗口,拥塞控制。 ● 请说明一下哪种应用场景会使用TCP协议,使用它的意义 考察点:TCP协议 参考回答:

网络编程定义

非 Y 不嫁゛ 提交于 2020-03-30 13:03:53
网络编程 1.网络通讯协议 理论知识点 学习网络编程的目的? 什么是互联网 网: 由多个节点相互连接组成 渔网 蜘蛛网 计算互联网: 由多台计算机通过某种介质相互连接而组成 互联网之所以存在就是为了能让信息共享 网络编程 :指的是编写基于网络的应用程序 学习网络编程的目的 开发出一款可以利用网络来传输数据的应用程序 CS结构 建立网络至少需要两台计算机,然后使用网络来传输数据 1.网络必须联通 2.在需要访问数据一方 必须安装用于访问数据的应用程序 该应用程序称之为客户端应用程序(client) 在需要提供数据的一方 必须安装用于共享数据的应用程序 该应用程序称之为服务端应用程序(server) 简写为C/S 例如: qq 就是一个客户端 服务器在腾讯公司 腾讯视频 B/S Browser浏览器/Server 该结构下 通过传输都是HTML文本数据 学习网络编程 最终的目的就是要编写出一个基于C/S结构的应用程序 要通讯必须具备的两个条件 1.物理传播介质 (双绞线 光纤 同轴线 无线电波) 2.通讯协议 (重点) 通讯协议 是由发送方和接收方共同商定一套规范 为什么需要协议 其目的是是为了双方能正确解析数据 例如 国内通讯:双方都是用普通话 国际通信:使用英文 IBM DELL HP 早些年 每个公司都有自己一套通讯协议 这导致了 不同品牌的电脑连不了网 于是

服务器socket

强颜欢笑 提交于 2020-03-30 07:04:27
做了一个web项目,放在服务器上运行一段时间就报错了。 java.net.SocketException: No buffer space available (maximum connections reached?): connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl

socket模块

狂风中的少年 提交于 2020-03-30 05:25:19
socket 模块 C/S架构 服务器是一个软件或硬件,用于用户需求的服务 硬件上,客户端常见的就是平时所使用的PC机。软件上,服务器主要提供的服务主要是程序的运行,数据的发送与接收、合并、升级或其他程序的操作或数据的操作。 套接字 套接字是一种具有“通讯端点”概念的计算机网络数据结构 一种套接字是Unix套接字,其家族名为AF_UNIX 另一种套接字是基于网络的,家族名为AF_INET 如果把套接字比作电话的插口,那么主机与端口就像区号与电话号码的一对组合 面向连接和无连接 无论你使用那一种地址家族,套接字的类型只有两种。一种是面向连接的套接字,另一种是无连接的套接字 面向连接的主要协议就是传输控制协议TCP,套接字类型为SOCK_STREAM 无连接的主要协议是用户数据报协议UDP,套接字类型为SOCK_DGRAM python中使用socket模块中的socket函数实现套接字的创建 socket函数与方法 创建TCP服务器 主要步骤 1.创建接收服务器套接字:s = socket.socket() 2.绑定地址到套接字:s.bind() 3.启动监听:s.listen() 4.接收客户连接:s.accept() 5.与客户通信:recv()/send() 6.关闭套接字:s.close() 创建TCP客户端 1.创建客户端套接字:cs = socket.socket() 2

socket通信基础内容

亡梦爱人 提交于 2020-03-26 16:55:37
对 TCP/IP、 UDP、 Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问: 1. 什么是 TCP/IP、 UDP? 2. Socket在哪里呢? 3. Socket是什么呢? 4. 你会使用它们吗? 什么是 TCP/IP 、 UDP ? TCP/IP( Transmission Control Protocol/Internet Protocol)即传输控制协议 /网间协议,是一个工业标准的协议集,它是为广域网( WANs)设计的。 UDP( User Data Protocol,用户数据报协议)是与 TCP相对应的协议。它是属于 TCP/IP协议族中的一种。 这里有一张图,表明了这些协议的关系。 图 1 TCP/IP协议族包括运输层、网络层、链路层。现在你知道 TCP/IP与 UDP的关系了吧。 Socket 在哪里呢? 在图 1中,我们没有看到 Socket的影子,那么它到底在哪里呢?还是用图来说话,一目了然。 图 2 原来 Socket在这里。 Socket 是什么呢? Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据

CH 02 物理层 —— 计算机网络

别来无恙 提交于 2020-03-24 00:59:43
⭐️ 声明 部分转载自CSDN博主「夏洛克卷」—— 计算机网络基础 之二:物理层 1.1 物理层的基本概念 定义:OSI模型的最底层, 功能:制定系统与传输媒体的 接口规则 ,实现两个物理设备之间的 比特流传输 。 注意: 物理层并不是传输媒体,它与传输媒体有关,一层协议,规范。 物理层规定传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,主要关心 如何 传输信号。 物理层向上屏蔽了底层实现的复杂性。 物理层协议主要通过 接口特性 来描述:机械特性、电气特性、功能特性和规程特性。 1.机械特性 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。 2.电气特性 指明在接口电缆的各条线上出现的电压的范围。 3.功能特性 指明某条线上出现的某一电平的电压表示何种意义。 4.过程特性 指明对于不同功能的各种可能事件的出现顺序。 1.2 数据通信系统的模型 ​ 如图所示,一个数据通信系统可划分为三大部分,即源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接收端、接收方)。 通信的目的是传送 消息(message) 。如话音、文字、图像、视频等都是消息。 数据(data) 是运送消息的实体。根据RFC 4949给出的定义,数据是使用特定方式表示的信息,通常是有意义的符号序列。这种信息的表示可用计算机或其他机器(或人

网络002

只愿长相守 提交于 2020-03-23 05:12:17
osi七层参考模型:一个开放式的体系架构 ip地址又称逻辑地址是可以发生改变的 MAC地址又称物理地址(网卡上的物理地址)是可以改变的 1-3层点与点之间的通信 4-7层端与端之间的通信 语法:传输数据包的格式说话的顺序 TCP/IP协议簇 协议端口号 应用层 HTTP 80 FTP 20 21(用于监控) TFTP 69 SMTP 25 SNMP 161 DNS 53 TCP可靠传输 UDP 语音传输 不可靠效率高 协议数据单元PDU 应用层 上层数据 传输层 数据段 网络层 数据包 数据链路层 数据帧 物理层 比特流 T568A线序:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕 T568B线序:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕 1 发 2 收 3发 6收 其他线路备用 同种设备交叉线,不同设备直通线 路由器与pc机是同种设备 进制的转换: 二进制:0 1 逢二进1 八进制:0 1 2 3 4 5 6 7 逢八进1 十进制:0 1 2 3 4 5 6 7 8 9 逢10进1 十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F 逢十进1 软蝶通:企业级应用的U起,安装系统windows、linux、unix、一个u盘只能做一个系统 计算机存储量单位 1024字节 ------- 1KB 1024KB ------- 1MB 1024MB ------- 1GB

c# socket udp广播

时光毁灭记忆、已成空白 提交于 2020-03-22 05:46:18
一、广播消息   由于Tcp是有连接的,所以不能用来发送广播消息。发送广播消息,必须用到Udp,Udp可以不用建立连接而发送消息。广播消息的目的IP地址是一种特殊IP地址,称为广播地址。广播地址由IP地址网络前缀加上全1主机后缀组成,如:192.168.1.255是192.169.1.0这个网络的广播地址;130.168.255.255是130.168.0.0这个网络的广播地址。向全部为1的IP地址(255.255.255.255)发送消息的话,那么理论上全世界所有的联网的计算机都能收得到了。但实际上不是这样的,一般路由器上设置抛弃这样的包,只在本地网内广播,所以效果和向本地网的广播地址发送消息是一样的。   利用udp广播可以实现像cs中建立服务器后,客户端可以收到服务器消息从而进行连接。 二、服务端 开启线程不断广播自己ip地址等信息,等待客户端接收 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Net; 6 using System.Net.Sockets; 7 using System.Threading; 8 using System.Threading.Tasks; 9 10 namespace

Android网络通信之Socket

微笑、不失礼 提交于 2020-03-22 04:59:09
在移动APP开发中。网络通信数据传输是必定存在的。移动APP离开了网络通信数据传输的功能方式,就好比一潭死水,永远都 是原来的样子。 提到网络通信传输数据。首先出如今程序猿脑海中的是HTTP协议传输,然而要深沉次的挖掘HTTP协议的传输原理, 那么久会有一个Socket的长连接数据传输的方式。HTTP协议数据传输,分为Get、POST两种请求方式,而Socket长连接也有两种方 式,一种是TCP协议的传输方式,还有一种是UDP协议的传输方式。在此。我觉得Socket的理解例如以下: 一、 Socket定义: Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层。它是一组接口。在设计模式中, Socket 事实上就是一个门面模式, 它把复杂的 TCP/IP 协议族隐藏在 Socket 接口后面。对用户来说,一组简单的接口就是所有,让 Socket 去组织数据,以符合指定 的协议。 二、基于TCP/IP协议的Socekt 1、 使用 Socket 实现client的步骤; 1 、通过 IP 地址和port实例化 Socket, 请求连接server 2 、获取 Socket 上的流以进行读写 3 、把流包装进 BufferReader/PrintWriter 的实例 4 、对 Socket 进行读写 5 、关闭打开的流 创建server的步骤: 1