计算机网络

TCP/IP和Socket的区别

百般思念 提交于 2019-12-01 03:18:30
要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。 对于网络编程,我们也言必称TCP/IP,似乎其它网络协议已经不存在了。对于TCP/IP,我们还知道TCP和UDP,前者可以保证数据的正确和可靠性,后者则允许数据丢失。最后,我们还知道,在建立连接前,必须知道对方的IP地址和端口号。除此,普通的程序员就不会知道太多了,很多时候这些知识已经够用了。最多,写服务程序的时候,会使用多线程来处理并发访问。 我们还知道如下几个事实: 1。一个指定的端口号不能被多个程序共用。比如,如果IIS占用了80端口,那么Apache就不能也用80端口了。 2。很多防火墙只允许特定目标端口的数据包通过。 3。服务程序在listen某个端口并accept某个连接请求后,会生成一个新的socket来对该请求进行处理。 于是,一个困惑了我很久的问题就产生了。如果一个socket创建后并与80端口绑定后,是否就意味着该socket占用了80端口呢?如果是这样的,那么当其accept一个请求后,生成的新的socket到底使用的是什么端口呢(我一直以为系统会默认给其分配一个空闲的端口号)

互联网应用的两种工作模式:客户/服务器模式与P2P模式

妖精的绣舞 提交于 2019-12-01 03:10:46
《智慧的物联网——感知中国和世界的技术》第3章互联网:物联网的运行环境,本章在系统介绍计算机网络与互联网基本概念的基础上,深入讨论了“三网融合”,以及物联网与互联网的区别与联系。本节为大家介绍互联网应用的两种工作模式:客户/服务器模式与P2P模式。 AD: WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 3.3.3 互联网应用的两种工作模式:客户/服务器模式与P2P模式 从互联网应用系统的工作模式角度看,互联网应用可以分为两类:客户/服务器(C/S)模式与对等(P2P)模式。 1.客户/服务器模式的基本概念 从应用层的应用程序工作模型的角度看,应用程序分为客户端程序与服务器程序。以Email应用程序为例,Email应用程序分为服务器端的邮局程序与客户端的邮箱程序。用户在自己的计算机中安装并运行客户端的邮箱程序,就能够成为电子邮件系统的客户端,发送和接收电子邮件。而安装邮局应用程序的计算机就成为了电子邮件服务器,它为客户提供电子邮件服务。 互联网应用系统采用客户/服务器模式的主要原因是网络资源分布的不均匀性。网络资源分布的不均匀性表现在硬件、软件和数据三个方面。 1)网络中计算机系统的类型、硬件结构、功能都存在着很大的差异。它可以是一台大型计算机、高档服务器,它也可以是一台个人计算机,甚至是一个PDA或家用电器。它们在运算能力

网络编程套接字

≯℡__Kan透↙ 提交于 2019-11-30 22:52:54
目录 计算机网络 网络编程相关概念 计算机之间通信需要的条件 IP地址 IP地址分类 端口 端口号的取值范围:0~65535 端口分类: 常用端口: TCP/IP、UDP概念 服务器端 创建: 常用方法: 客户端: 创建: HTTP 响应代码: HTTP的特点: Java的HTTP连接 创建方法: 方法: HttpURLConnection 网络连接 Socket网络连接 DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream()); 真挺好用的writeUTF写汉语可以write写字节也可以,很好用. 还有就是在socket中不能传送字符,只能是字节. 在socket通信中因为通信双方都只有一个socket所以所有的 dataOutputStream.writeUTF(file.getName()); dataOutputStream.write(buffer,0,len); String name = dataInputStream.readUTF(); fileOutputStream.write(buffer, 0, len); 这种方法都只能执行一次,所以这种方法执行的结果都要注意接收,不接收再调就没有了. 因此他们的生命周期就是执行一次

OSI七层模型

你离开我真会死。 提交于 2019-11-30 18:10:19
OSI七层模型介绍 : OSI参考模型其实就是讨论通信问题,所不同其针对的是计算机通过网线或无线网去通信。为了容易理解,首先用一个例子来形容: 我写一封信给朋友,首先,是我写信,讲往事如风,说我们两个人之间的老故事,这些东西只要我两之间懂就OK了。好写完后,我就寄信去了。。具体的寄信跑腿等工作,则属于下一层了。那么下一层是谁呢?对,邮政局。邮政局把信纸装进固定格式的信封中,信封上有固定格式的要求。那么邮政局不需要知道信到底写了什么,他们不关心,只管捯饬信封就可以,让对方拿到信封后知道那是给我朋友的就OK了。好,这个层次结束。。那么是不是没其他层次了呢??错,还有一个层次,那就是最底层。邮递员层。。他们负责跑腿,例如骑马,骑车或者开火车开飞机,随便,反正是具体的跑腿工作。。。好,回过头来看,写一封信进行通信,分了三个层次:我和朋友,属于用户层,负责信内容的书写和阅读;邮政局,属于类似于OSI的运输层,负责信封的格式书写和阅读。。邮递员,最底层,类似于OSI的物理层,负责具体的传输方式。 好,回到OSI,这个以计算机为原始设备的通信模型,考虑的要复杂一些而已,分成了7个层次。最底层,物理层:负责具体的传输媒介以及其对应的传输方式,解决的问题是实现比特流的传输。数据链路层:负责相邻两个节点间比特流的识别,即以字节为单位去找出“每页信纸”。网络层:实现网络中任意两个节点间的连通和数据转发。

pytho——OSI七层模型

旧巷老猫 提交于 2019-11-30 18:04:12
OSI七层模型图 从图中我们已经了解到OSI七层分为:物理层;数据连接层;网络层;传输层;会话层;表示层;应用层。 OSI七层各层的讲解: 1.物理层: 在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。 物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。 设备:网卡,网线,集线器,中继器,调制解调器 2.数据链路层: 数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。 该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。

0基础带你认识爬虫

徘徊边缘 提交于 2019-11-30 15:13:06
爬虫 一、认识爬虫 1、概念 口语化定义:网络爬虫,程序,自动,批量,下载网络资源。专业角度:伪装成客户端与服务端进行数据交互的程序 2.相关概念 2.1应用架构 (软件的结构是什么样子的) - c /s client server 客户端,服务端架构(比如lol,qq) - b /s browser 浏览器服务器架构(各种网站) - m /s mobile 移动端,服务端(手机app) 那么客户端和服务端怎么传数据呢?他们有协议 2.2 http协议 超文本传输协议(从服务器传输超文本信息到客户端,客户端是没有数据的,数据在服务端,打开一个网页,数据通过http协议从服务器下载回来,整个互联网90%的数据都是基于http协议) 一个完整的http事务包含以下几个流程 1. 输入网址,dns (域名解析成ip,ip就是我们电脑在互联网上的地址,唯一的,在dns上找到域名,解析成我们需要的ip,找到我们的服务器) 2. TCP连接,三次握手 (建立好连接,建立好通道) 3. 客户端发送HTTP请求报文 4.服务端收到请求,处理请求,返回一个包含结果的响应 5.浏览器 (根据收到信息的不同)渲染和展示 特点 - http无连接 每次只处理一个请求(非常快速,每个请求都是完整的) - http媒体独立 - http无状态(连续两次请求区分不了是两个用户还是一个用户) 2.2.1 请求

面试中必备的网络相关知识

北慕城南 提交于 2019-11-30 12:28:43
废话不说,直接上干货。 1.协议的概念和作用 为了能让计算机之间能够通信,计算机需要定义通信规则,这些规则就是协议。规则有多种,协议也有多种。协议就是数据封装格式+传输。 2.OSI七层模型 应用层:提供网络服务和最终用户软件之间的接口服务。 表示层:数据的表示、安全、压缩。 会话层:建立、管理、中止会话。 传输层:定义传输数据的协议端口号,以及流控和差错校验。 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。 数据链路层:建立逻辑连接、进行硬件地址寻址、差错检验等功能。 物理层:网线、同轴电缆等。 3.TCP/IP参考模型 常用的协议: TCP/IP协议被称为传输控制协议/互联网协议,又称网络通讯协议,是由网络层的IP协议和传输层的TCP协议组成的,是一个很大的协议集合。 物理层和数据链路层没有定义任何特定协议,支持所有的标准和专用的协议。 网络层定义了网络互连,也就是IP协议: (1) 网际协议(IP):负责主机和网络之间寻址和路由数据包。 (2) 地址解析协议(ARP):获得同一物理网络中的硬件主机MAC地址。 (3) 网际控制消息协议(ICMP):发送消息,并报告有关数据包的传送错误。 (4) 互联网管理协议(IGMP):IP主机向本地多路广播路由器报告主机组成员。 传输层定义了TCP(传输控制协议)和UDP(用户数据报协议)。 应用层定义了HTTP(超文本传输协议)

计算机网络太难?了解这一篇就够了

混江龙づ霸主 提交于 2019-11-30 11:56:55
计算机网络、计算机操作系统这两个“兄弟”是所有开发岗位都需要“结拜”的,不管你是 Java、C++还是测试。对于后端开发的童鞋来说,计算机网络的重要性不亚于语言基础,毕竟平时开发经常会和网络打交道,比如:抓个包等等。所以对这一块知识点的准备还是要抱着敬畏之心,不要放过任何一个漏网之题。下面分享下我的学习过程: 1.看书:对于计算机比较基础的模块,我都是比较推荐找一本经典的书籍来好好学习下,不可以只看面经就去面试了。我一共看了两本书:汤小丹的《计算机操作系统》和《图解HTTP》。《计算机操作系统》是教科书,所以知识点相对比较基础,覆盖范围也比较广,非科班的学生还是很有必要看一看的。《图解HTTP》这本书用很多插图将一些知识点讲的通俗易懂,看起来也很快,还是比较推荐的。 2.做笔记:计算机网络的知识点还是比较多的,需要看书的时候做好笔记,方便复习。而且做笔记的时候可以就这个知识点去百度下,看看有没有自己遗漏的点,再给补充进来。在这里说下,我为什么一直强调做笔记?好处 1:做笔记是第 1 次你对书中的知识点的回顾,加深记忆;好处 2:而且如果你是发表在公关社区的肯定要保证最大限度的正确性,就需要再去看看这个知识点,核对下自己是否有理解偏差和遗漏等,这样就完成了知识点的深挖;好处3:正在到面试复习的时候,你是不太可能重新看一本书的,那么笔记就显得很重要了,自己做的笔记,复习起来很快

socket、端口、进程的关系

烂漫一生 提交于 2019-11-30 10:55:41
本文属网络编程部分。 socket的引入是为了解决不同计算机间进程间通信的问题。 端口是TCP/IP协议中的概念,描述的是TCP协议上的对应的应用,可以理解为基于TCP的系统服务,或者说系统进程!如下图,FTP就需要占用特定的TCP端口。 TCP 而 socket 呢,是网络编程中的概念,对TCP/IP协议进行了抽象和实现,并为应用层提供接口。这里的应用A,可以是FTP应用,它属于用户进程,通过socket与内核中的网络协议栈进行交互。 socket socket 是核心,是枢纽,是进程与网络建立关系的必经之路! 1.内核是如何将数据包转发至 socket 的呢? 网络数据首先到达网卡,然后进入内核,由网络协议栈去处理,那么内核是如何进行数据分发的呢?它怎么知道该如何把数据交给特定的用户进程呢? 这时,就需要 socket 发挥作用了! socket 中存储了特定的四元组: 源ip+port,目的ip+port; 1> bind 到特定 ip 和 port 的socket 对应 [src ip, src port) <=> (*, *)] ; 2> connect 到特定目的ip+port 的 socket 对应 [src ip, src port) <=> (dst ip, dst port)]; 3> accept 返回了的 socket 对应 [src ip, src

【转帖】Linux 内核系统架构

孤街浪徒 提交于 2019-11-30 06:21:18
Linux 内核系统架构 描述Linux内核的文章已经有上亿字了 但是对于初学者,还是应该多学习多看,毕竟上亿字不能一下子就明白的。 即使看了所有的Linux 内核文章,估计也还不是很明白,这时候,还是需要fucking the code. 28年前(1991年8月26日)Linus公开Linux的代码,开启了一个伟大的时代。这篇文章从进程调度,内存管理,设备驱动,文件系统,网络等方面讲解Linux内核系统架构。Linux的系统架构是一个经典的设计,它优秀的分层和模块化,融合了数量繁多的设备和不同的物理架构,让世界各地的内核开发者能够高效并行工作。先来看看Linus在多年前公开Linux的邮件。 "Hello everybody out there using minix - I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS