Crash-Course-CS-E29-互联网
今天是新学期的第一天,接受了计算机网络相关的狂轰滥炸。说实话,一直都不太理解计算机网络的相关概念。只能对照着过去的笔记把Crash 再看一遍。
- IP Internet Protocols
- UDP: User data protocols
- Checksum 校验和
- TCP/IP
- DNS domain name system
- OSI
引例
当你在视频网站上看视频的时候,你的计算机会跟什么呢?当你点进一个连接的时候,web browser又干了什么呢?
当你请求上网时,分为如下几步:
you try to have access to LAN
LAN have access to WAN
一般的WAN属于你的“互联网服务供应商”
最后,你的请求到达了视频网站的server
然后视频网站的server就要把视频发给你啦!当然视频这么大的file,也需要被chop up into packet进行传输,最后兜兜转转回到你的计算机之中。
IP
诞生逻辑
上面说的这些packet在network上进行传输的过程中是需要符合一定的标准限制的,就像你去邮局寄件一样,邮局对你寄件的内容,你填写邮寄单的格式都有一定的要求。
毕竟,总得有个标准协议告诉你你要向哪个计算机送数据包吧。
这些标准限制,可以把它们理解为协议(protocols)。
IP的最基本格式
IP的最基本格式由IP header和data payload两部分组成;
其中IP header中存放了一些最基本的关于你要传输的这个包的信息,这一 逻辑在计算机中是很常见的。比如最相似的是在进行动态内存分配的时候,空闲链表有最基本的footer和header;而页表的对照,也是由某一文件具体描述一堆文件的逻辑。
IP is at a very low level
既然我们讲了IP是非常底层的,所以数据包的header中只有目标地址,所以当对方计算机收到货铺,并不知道这个文件是给哪个应用使用的,所以就有更”高级”的UDP;
UDP
诞生逻辑
前面讲过IP和UDP 各有使命:
IP是为了把数据包送到正确的计算机;
UDP则是为了把数据包送到正确的程序
UDP的基本组成
UDP包含三个部分,第一个部分是IP header,第二个部分存放Port和checksum,第三个部分则仍是payload。
Port number
每个想访问网络的程序,都要像Host的OS申请一个独一无二的端口号。
Checksum
checksum故名思义,就是将后面的每个payload的大小相加校对,以检查数据包在传输的过程中数据有无对视;
然而,UDP不提供数据修复或者数据重发机制,对于发现有数据丢失的现象的包,它们一般都是discard掉。
TCP/IP
诞生逻辑
当然,有些对时间要求很高的程序,是可以接受packet loss的。比如我们在线播放视频的程序,你不得不选择降低清晰度来跟流畅度做一个trade off;比如在线射击的动作游戏,你总不能希望你的下一个shooting要等很久吧?(这也是为什么有了更好的TCP/IP以后,UDP还没有被摒弃的原因。)
但是,有些程序不能接受packet loss。比如,你永远不可能接受你给别人发送的电子邮件的时候,packet loss而丢掉你文章的主题部分。
组成
TCP/IP包含三个部分,第一个部分是IP header,第二个部分是TCPheader,第三个部分则仍是payload。
TCP/IP v.s. UDP
TCP 的数据包是有一定的序列的(sequential),这样,即便是我的不同的packet,在它们到达时的先后顺序不一样,我也保证了最后组成的correctness;
TCP implementations in OS;
TCP要求,
1
2if(receiver收到&&(checksum is correct)==True)
PC.send("ACK",Sender);//即给发送方发送acknowledgement,确认码;当然,有多个包在传送,有多个ACK被发送;
而Sender没有接收到ACK码的原因可能有两种,一种是出现了不符合上面条件判断的情况,另一种则是我的ACK它自己在数据传输的过程中跑丢了!
这没啥大问题,因为即使ACK丢了,我的包发重复了,我也因为sequence的加持保证了正确性。
ACK
确认码的成功率和来回时间可以推测整个网络的拥挤程度;
从而我们可以根据拥堵情况调整传输率(E28)
- TCP岁大的缺点是,”ACK”本身作为一种packet,在我传达信息量相同的情况下把数据包的量翻了一倍,这也是为什么一些对时间要求很高的程序不是很偏好TCP的原因。
Make a connection to a website
When you want to make a connection to a website, things actually go like this.
You need the IP address and the Port number;
So where to get those two things?
First step: your browser or your client send Request to a DNS server. It manage to try to get the IP address;
DNS
DNS can be understood as phonebook for Internet. 其中IP地址和域名一一对应。
DNS is usually ran by the 互联网提供商。
Second step: when the DNS send back the valid address to your web browser. This is like make a Response.
Third step: Then browser shoots off a request over TCP for the website’s data.
domain structure
Tree structure;
TLD(top level domain ):.org
、.com
sub domains: google.com
There are a huge thousands Domain Name Server, and each is mapped to a different tree.
OSI: open system interconnection
将网络通信划分成多层,使科学家和工程师能分工同时对应改进多个层,利用抽象,而不至于被整体复杂度难倒。
osi structure(hierarchy )
Session layer
protocols like TCP/UDP are used to open a connection, pass the information back and forth, and then colose the connection.
Transport layer
利用UDP/TCP 进行计算机间点到点的传输,同时有error detection
Network layer
all switching and routing technologies
data link layer
MAC address, collision detection, exponential back off and other similar low level protocols which mediate access to the physical layer.
physical layer
线路里的电信号,无线电网络里的无线信号。