计算机网络

Socket网络通讯

独自空忆成欢 提交于 2020-01-14 11:52:25
什么 是网络模型 网络编程的本质是两个设备之间的数据交换,当然,在 计算机网络 中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据。   现在的网络编程基本上都是基于请求 /响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。   在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端 (Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动,而服务器为了能够时刻相应连接,则需要一直启动。例如以打电话为例,首先拨号的人类似于客户端,接听电话的人必须保持电话畅通类似于服务器。   连接一旦建立以后,就客户端和服务器端就可以进行数据传递了,而且两者的身份是等价的。   在一些程序中,程序既有客户端功能也有服务器端功能,最常见的软件就是 BT、emule这类软件了。 下面来谈一下如何建立连接以及如何发送数据。 IP 地址 与 域名 在现实生活中,如果要打电话则需要知道对应人的电话号码,如果要寄信则需要知道收信人的地址。在网络中也是这样,需要知道一个设备的位置,则需要使用该设备的 IP地址,具体的连接过程由硬件实现,程序员不需要过多的关心。    IP地址是一个规定,现在使用的是IPv4,既由4个0-255之间的数字组成

基本通信模型

人走茶凉 提交于 2020-01-13 12:07:59
·概要: 所谓的基本通信模型是指SOCKET通信。这里介绍的是初期学习使用的一些SOCKET相关概念和接口使用情况。 SOCKET编程也跟平台有关:linux等平台使用的是标准SOCKET--又称Berkeley Socket;windows平台的Winsock。 ·要点: --基础: Socket实际上是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制。其中IP用于定位通信的计算机,而端口则可以定位到通信的进程。这跟电话很像:IP+Port相当于电话号码,只要知道电话号码就可以给其他人打电话了。 常用的TCP/UDP则是具体的通信方法(协议),这些是已经成熟并被完整实现的技术,所以使用的使用只要指定是采用TCP还是UDP方式就好。同时在这两种协议上发展了很多应用协议,TCP之上的FTP/SMTP/TTP/HTTP,UDP之上的TFTP和广播技术。 一个网络连接需要的信息:本地主机地址+本地协议端口(怎么找到我)、远程主机地址+远程协议端口(怎么找到你)和协议(打电话还是发短信)。 --相关函数和数据结构(以TCP为例): 数据结构: socket作为整个通信的基础在linux平台定义为INT类型,而在windows平台则定义为:SOCKET socket{int af(协议族),int type(类型),int protocol(协议地址)};同时在内部定义了协议

TCP/IP四层模型和OSI七层模型的概念

痴心易碎 提交于 2020-01-12 13:52:36
转: http://blog.csdn.net/superjunjin/article/details/7841099/ TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。 OSI七层模型 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范

前端应该掌握的web基础和网络知识

喜夏-厌秋 提交于 2020-01-12 12:42:25
* 关于HTTP协议 http协议是www服务器和用户请求代理之间通过应答模式来传输超文本内容的一种协议,它是基于请求与响应、无状态、应用层的一种协议。大多数的web应用都建立 在http协议的基础之上。 *********************************************************** http的工作流程: 在进行http协议会话的过程中,首先会有一个Tcp/ip连接的过程,客户端与服务器端会通过socket三次握手建立连接; 建立连接成功之后,客户端向服务器端发送请求报文;(发送数据) 服务器端处理请求,并返回响应报文作出应答; 服务器断开Tcp连接,如果服务器端或客户端头部包含有connection为keep-alive的头域信息,客户端与服务器端会继续保存连接,在下次请求时会使用这次的连接。 *********************************************************** 在HTTP 1.1协议中,任何http请求的报文头部域中都默认包含了keep-alive头域信息,所以基于http1.1协议的请求连接在一段时间内都是持续有效的; 在HTTP1.0协议中,虽然默认请求的服务器返回是没有keep-alive,但是如果要基于http1.0协议建立长连接,可以在请求消息中包含connection为keep

web service基础知识

一笑奈何 提交于 2020-01-11 16:17:47
web service基础知识 Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等。 当我们输入www.oldboyedu.com/时候,很快就能看到老男孩教育的官网了,这一切看起来很平淡无奇,背后又是什么道理呢?普通人可以不知道,但是咱们作为it开发人员,必须得掌握清楚背后的技术。 下面为你揭晓用户访问网站的基本流程 老男孩教育某python总监,讲了一天课感觉很累,下了班躺床上打开他的macbook pro,双击浏览器,输入www.pornhub.com网址后,系统首先会查找本地的DNS缓存以及hosts文件信息,确定是否存在www.pornhub.com域名对应的ip解析记录,如果有就直接获取ip进行访问服务器,第一次请求时,dns缓存是没有解析记录的,hosts文件多数是开发临时测试用 如果本地dns缓存和hosts文件都没有域名解析记录,系统就会把某python总监访问的网址解析请求发送给客户端设置的DNS服务器去解析,也叫做Local DNS,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回给客户端IP地址,如果没有LDNS就会继续请求其他的DNS服务器 LDNS继续从DNS系统的"."(根)开始请求www.pornhub.com域名的解析

【计算机网络】二十七. 传输层--TCP协议的拥塞控制

不问归期 提交于 2020-01-11 14:09:25
TCP协议的拥塞控制 目录 一、流量控制与拥塞控制的区别 二、拥塞控制的方法 (1)慢启动算法 (2)拥塞避免算法 注:转载请标明原文出处链接: https://lvxiaowen.blog.csdn.net/article/details/103934671 一、流量控制与拥塞控制的区别 一条数据链路经过非常多的设备,数据链路中各个部分都有可能成为网路传输的瓶颈。 流量控制考虑点对点的通信量的控制。 拥塞控制考虑整个网络,是全局性的考虑,报文超时则认为是拥塞。 二、拥塞控制的方法 (1) 慢启动算法 由小到大逐渐增加发送数据量,每收到一个报文确认,就加一。 (2)拥塞避免算法 维护一个拥塞窗口的变量,只要网络不拥塞,就试探着拥塞窗口调大。 参考资料: [1] https://coding.imooc.com/class/355.html 来源: CSDN 作者: 口口lv 链接: https://blog.csdn.net/lxw234lxw/article/details/103934671

Windows网络驱动、NDIS驱动(微端口驱动、中间层驱动、协议驱动)、TDI驱动(网络传输层过滤)、WFP(Windows Filtering Platform)

天涯浪子 提交于 2020-01-11 03:22:43
catalog 0. 引言 1. Windows 2000网络结构和OSI模型 2. NDIS驱动 3. NDIS微端口驱动编程实例 4. NDIS中间层驱动编程实例 5. NDIS协议层驱动编程实例 6. TDI驱动 7. TDI的过滤框架 8. WFP(Windows Filtering Platform windows过滤平台) 0. 引言 最早出现的网络驱动应该是网卡驱动,这是Windows的下进行网络安全攻防常见的需求,为了进一步分割应用程序的网络数据传输与下层协议直到下层硬件的关系,又出现了协议驱动,后来微软和硬件商联合制定了NDIS标准,作为从硬件到协议的内核驱动程序的调用接口标准,而协议驱动与应用层的API之间,则出现了TDI接口,即从上到下的关系是 应用层API -> TDI -> 协议驱动 -> NDIS -> 下层硬件 0x1: 网卡驱动 网卡驱动程序(Device Driver)全称为"设备驱动程序",是一种可以使计算机中央处理器: CPU控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬件设备的工作。所有的硬件都要安装驱动程序,没有驱动程序的硬件是运行不了的,就像一辆有轮胎但是没有传动轴的汽车一样跑不起来,控制不了 假如某设备的驱动程序未能正确安装,便不能正常工作。 网卡驱动程序就是CPU控制和使用网卡的程序

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平

喜你入骨 提交于 2020-01-10 22:52:39
这是我的最后一门博客了,主要总结了网络协议栈的部分内容(内容实在太庞大,只抽取一小部分来理解)。 此外作为最后的总结,我结合老师每个课件相关内容,找了相对应的题目。 一、网络协议栈总结 首先上图,此图是客户端发到服务器消息所经过的完整路径(图片源自:https://www.cnblogs.com/sammyliu/p/5225623.html) 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etc INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,还需要保留些额外的参数,于是就有了struct sock结构。文件主要 有:/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc TCP/UDP层:处理传输层的操作,传输层用struct inet_protocol和struct proto两个结构表示。文件主要有: /net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?

懵懂的女人 提交于 2020-01-10 19:33:23
网络程序设计知识总结 网络相关工具 在网络相关的命令工具调研中我选取了 nslookup 作为案例。 详细可以参考 我的博客 nslookup作用 nslookup,全称是name server lookup,也就是域名查询。nslookup是一个用于查询Internet域名信息或者诊断DNS服务器问题的工具。 nslookup可以指定查询的类型,能够查询到DNS记录的生存时间,并且还能够在命令中使用参数指定使用哪个DNS服务器进行解释。 在已经安装了TCP/IP协议的电脑上均可以使用这个命令。 总结起来,nslookup命令主要用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。 nslookup的应用场景 一般来说,我们在一台主机上配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了。 不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常。许多人会简单地使用ping命令检查一下就算了。不过Ping指令只是一个检查网络连通情况的命令,虽然在输入的参数是域名的情况下会通过DNS进行查询,但是它只能查询A类型和CNAME类型的记录,而且只会告诉你域名是否存在,其他的信息一概欠奉。 所以如果你需要对DNS的故障进行排错就必须熟练另一个更强大的工具nslookup。 nslookup命令的使用

网络程序设计期末考试试卷

℡╲_俬逩灬. 提交于 2020-01-10 19:30:03
一、如何评测软件工程师的计算机网络知识水平与网络编程技能水平? 1.计算机网络基本知识 集线器、路由器、光纤、同轴电缆等硬件设备的基本了解; TCP/IP网络的五个层次; TCP/IP协议栈的初始化,网络数据收发的具体过程; ARP、DNS、L2交换网络的基本了解; 2.代码作业能力 熟悉Linux Socket网络编程; 追踪了解Socket API与系统调用的关系; 能够阅读并分析涉及网络数据收发过程的函数源代码; 3.学习能力 善于阅读源代码与技术文档; 善于搜索并学习他人经验; 二、基于Linux源码的网络协议栈简介 1.网络层次结构 2.Linux Socket socket 位于应用层,它为网络应用编程提供API。通过Linux Socket,网络应用程序得以访问内核空间的协议栈,从而形成通信。同时,Linux系统中一切皆文件,Socket也是文件的一部分,调用Socket API进行数据收发时控制的是收发缓冲区的文件描述符。Linux Socket API的定义在./net/socket.c中。以下是UDP Socket与TCP Socket处理过程 3.TCP/IP协议栈 TCP位于传输层,其主要功能包括建立连接(三次握手)、滑动窗口和拥塞控制,Linux中TCP栈的基本处理过程如下: IP位于网络层,其主要功能包括IP Fragment的分片转发和路由处理