计算机网络

面试问题之计算机网络:TCP如何保证数据可靠传输

微笑、不失礼 提交于 2019-11-29 04:35:47
转载于:https://blog.csdn.net/liuchenxia8/article/details/80428157 TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。 TCP保证数据可靠传输的方式主要有以下六点:校验和、确认应答与序列号、超时重传、连接管理、流量控制、拥塞控制。 1、校验和 在数据传输的过程中,将发送的数据段都当做一个16位的整数。将这些整数加起来。并且前面的进位不能丢弃,补在后面,最后取反,得到校验和。发送方在发送数据之前计算校验和,并进行校验和的填充。接收方收到数据后,对数据以同样的方式进行计算,求出校验和,与发送方的进行比对。 注意:如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致, 数据不一定传输成功。 2、确认应答与序列号 序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。 确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。 序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一。 3、超时重传 简单理解就是发送方在发送完数据后等待一个时间

计算机网络基础

自闭症网瘾萝莉.ら 提交于 2019-11-29 01:48:37
计算机网络的定义 计算机网络就是“一群具有独立功能的计算机通过通信线路和通信设备互连起来,在功能完善的网络软件(网络协议、网络操作系统等)的支持下,实现计算机之间数据通信和资源共享的系统” 计算机网络的作用: 1.数据通信 2.资源共享 3.分布式处理 见《大学计算机基础》 来源: https://blog.csdn.net/puyu2017/article/details/100170758

网络编程(2)

时光总嘲笑我的痴心妄想 提交于 2019-11-29 00:50:22
【网络编程】 主要内容 软件架构CS/BS 网络通信三要素 TCP通信 Socket套接字 ServerSocket 教学目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用类名称 能够编写TCP协议下字符串数据传输程序 能够理解TCP协议下文件上传案例 能够理解TCP协议下案例2 第一章 网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 [外链图片转存失败(img-rEm948HH-1567169440745)(img/1_cs.jpg)] B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 [外链图片转存失败(img-dLOAlD3M-1567169440746)(img/2_bs.jpg)] 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。 网络编程 ,就是在一定的协议下,实现两台计算机的通信的程序。 1.2 网络通信协议 **网络通信协议:**通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定

Socket是什么(一)

和自甴很熟 提交于 2019-11-28 23:51:28
网络编程就是编写程序使两台联网的计算机相互交换数据。 那么,这两台计算机之间用什么传输数据呢?首先需要物理连接。如今大部分计算机都已经连接到互联网,因此不用担心这一点。 在此基础上,只需要考虑如何编写数据传输程序。但实际上这点也不用愁,因为操作系统已经提供了 socket 。 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户。 来源: https://www.cnblogs.com/myitnews/p/11433082.html

计算机网络

萝らか妹 提交于 2019-11-28 21:35:24
关于 TCP 并发连接的几个思考题与试验 TCP 源端口号与目的端口号: 源端口号与目的端口号, 加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接 序号: 一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流编号 确认号: 仅当ACK标志位1时有效. 表示期望下一个字节的序号 头部长度: 标识TCP头部有多少个32bit(4字节). 因为4位最大能表示15, 所以TCP头部长度是60字节 保留位: 6位, 必须全为0 6个标志位: URG: 紧急指针是否有效 ACK: 确认序号是否有效 PSH: 接收方应尽快将这个报文段从TCP接收缓冲区中读走 RST: 表示要求对方中心建立连接. 称携带RST标志的TCP报文为复位报文段 SYN: 请求建立连接. 称携带SYN标志的TCP报文为同步报文段 FIN: 表示通知对方本端要关闭连接. 称携带FIN标志的TCP报文为结束报文段 16位窗口大小: 通过窗口大小来达到流量控制 检验和: 由发送端填充, 接收端对TCP报文执行CRC算法以检验TCP报文在传输过程中是否损坏. TCP特点: 基于字节流 --> 边界问题, 粘包问题 面向连接 可靠传输 缓冲传输 全双工 流量控制 --> 窗口机制 选项与填充(选项为4字节整数倍, 否则用0填充) 最常见的可选字段是最长报文大小MSS(Maximum Segment

读书笔记_python网络编程3_(1)

旧城冷巷雨未停 提交于 2019-11-28 20:36:32
0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通过一个Docker容器实现 0.1.1.调制解调器A和B下面的客户机(h1~h4)表示典型客户端场景,家庭或咖啡店(内部网络,不能访问互联网,如果要连互联网,都通过调制解调器IP进行连接) 0.1.2.调制解调器通过ISP网关连接广域网(主干路由器,负责将数据包发送至与之相连的网络) 0.1.3.example.com及相连机器表示机房配置。没有网络地址转换或伪装,互联网上的各个客户端可随意访问example.com后的三个服务器提供的服务端口 0.1.4.ftp、mail、www服务器运行正确配置的守护进程,Python脚本可以运行在其他机器,并成功连接到上述服务 0.1.5.所有服务器成功安装TLS证书,所有客户机有example.com的签名及安装受信证书,及要求TLS认证的Python脚本可以成功获取认证 0.1.6.可以在网络环境的任意一台机器上连接并运行命令,可对网络中的任意一个点进行数据包追踪,查看客户端和服务端之间的网络数据传输情况 1.客户端、服务器网络编程 1.1.协议栈与库 1.1.1.协议栈:复杂的网络服务建立在简单网络服务的基础上 1.1.2

计算机网络概述

假如想象 提交于 2019-11-28 20:20:01
什么是因特网 以构成因特网的基本硬件和软件组件来描述 处在因特网的边缘部分即连接到因特网上的设备成为主机(host)或端系统(end system) 端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起 最主要的两种分组交换机分别是路由器(router)和链路层交换机(link-layer switch) 端系统通过因特网服务提供商(ISP,Internet service provider)接入网络 端系统,分组交换机及其其他因特网部件都要运行一系列的协议(protocol),而TCP(Transmission control protocol,传输控制协议)/IP(Internet protocol,网际协议)是其中最为主要的两个协议 以为分布式应用提供服务的联网基本设施来描述 端系统提供了一个应用程序编程接口,你可以通过这个接口编写应用程序.运行在不同端系统上的软件需要互相分发数据,而因特网提供给这一系列服务 网络架构 客户服务器模式(Clinet-server model) 客户端,服务器都是主机 请求一方为客户,响应请求一方称为服务器 从双方建立联系的角度看,主动启动通信的是客户,被动等待通信的是服务器 客户端特点 一般只与服务器通信,连接具有间歇性,动态IP,客户端之间不直接通信 服务器特点 一直开启,IP固定

【计算机网络】面试常问:GET,POST,PUT方法的区别

时光怂恿深爱的人放手 提交于 2019-11-28 20:08:42
我在前面博客: 详解HTTP协议 中讲到HTTP协议的一些方法,但是被面试官问到最多的是get和post方法的区别,虽然很多人都知道,但是并不能让面试官满意,所以我在这里就重点比较获取数据的三种方法:GET,POST,PUT方法的区别 1. get 和 post 方法比较 get和post方法主要有以下五点区别: 安全性:post方法更安全 传输资源的大小:post能传输的资源更大 传输资源的数据类型:post能传输的数据类型更多 应用场景:post用于写入和修改数据,get用于搜索和查询 获取资源的速度:get更快!! 面试官心里最想让你说的一点 下面,我就针对上面分析到的五点,依次介绍一下: post 方法获取资源更安全 GET方法是使用URL传参的,而POST方法是在报文主体中传参,这也就意味着POST在传参时更安全。如下图所示,用GET方法请求时,用户的私人信息会暴露在URL中, 这存在很大隐患。 这里需要注意一点,直接使用HTTP协议发送的数据,是没有经过加密的,也就是说只要是有人想截取到报文,无论get还是post方法并没有区别,所以在HTTP协议中我们应该说post方法更私密,因为它将参数 “ 藏 ” 的更深。 post 方法能传输的资源更大 由于传参的方式不同导致传输资源的大小也不同。get方法请求时由于浏览器对地址长度的限制而导致传输的数据有限制

Swoole进程模型

北城余情 提交于 2019-11-28 19:59:45
进程 什么是进程 进程 Process 是计算机中的程序关于某数据集合上的一次运行活动,是系统分配资源和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体。在当代面向线程设计的计算机结构中,进程是线程的容器。简单来说,程序是指令、数据以及其组织形式的描述,而进程则是程序的实体。 在操作系统中,进程表示正在运行的程序,例如在终端中使用PHP命令运行PHP脚本,此时就相当于创建了一个进程,这个进程会在系统中驻存,申请属于它自己的内存空间和系统资源,并且运行相应的程序。 $ php build.php <?php //获取当前进程的PID echo posix_getpid(); //修改所在进程的名称 swoole_set_process_name("swoole process master"); //模拟持续运行100秒的程序 sleep(100);//持续运行100秒的目的是为了在进程中可以查看而不至于很快结束 运行程序 $ php build.php 71 查看进程 $ ps aux | grep 71 root 1 0.0 0.1 18188 1712 pts/0 Ss+ 11:07 0:00 /bin/bash root 71 0.0 3.0 340468 30788 pts/2 S+ 13:41 0:00 swoole

tcp/udp

眉间皱痕 提交于 2019-11-28 16:35:09
DP、TCP、可靠传输的工作原理、TCP首部格式、TCP可靠传输的实现、TCP流量控制、TCP的拥塞控制、TCP的连接管理这几个方面进行解析。 一、运输层协议概述 1.进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当两台主机使用网络的核心部分的功能进行点对点通信的时候,只有位于边缘部分的主机的协议栈才有运输层,而网络核心的路由器在转发的时候只有用到下三层的功能。 image 应用进程之间的通信: 两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。 输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。 “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。 image 运输层的主要功能: 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。 运输层还要对收到的报文进行差错检测。 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。 两种不同的运输协议: 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等)