筆試——數據庫、網絡、操作系統(Linux)

1、數據庫

元組行,屬性列
————————————————————————————————————————————————
模式:
Create Schema “s-t” Authorization username
Drop Schema s-t District/Cascade
————————————————————————————————————————————————
基本表
Create Table tablename
(
Sno CHAR(9) Primary Key;

);

Alter Table tablename
Add/Drop/Alter Column

Drop Table tablename (District/Cascade)
————————————————————————————————————————————————
索引
Create Unique/Cluster Index indexname
ON tablename(Sno ASC/DESC);
————————————————————————————————————————————————
數據查詢
1、
SELECT Sname NAME, ‘Year of Birth’ BIRTH, 2004-Sage BIRTHDAY, LOWER(Sdept) DEPARTMENT
這裏寫圖片描述

2、DISTINCT 消除取值重複的行
select DISTINCT sno,grade
from sc

3、
a%b(任意長度字符,表示至少兩個字符)
a_b(單個字符,只表示3個字符)

4 、通配符 LIKE/NOT LIKE
select *
from Course
where Cname LIKE ‘DB_Design%i__’ ESCAPE ‘\’;
ESCAPE ‘\’表示\爲轉碼字符。

5、空值查詢
where Grade IS null
在排序中空值最大

6、查詢某個學生選修課程的總學分數
select SUM(ccredit) / COUNT(DISTINCT Sno)
from SC, Coure
where Sno=’200215012’ AND SC.Cno = Coure.Cno

7、where having的區別
where作用於基本表、視圖
having作用於組,group
例如:查詢選修了3門以上課程的學生學號
select Sno
from SC
group by Sno
having COUNT(*) > 3
①查詢( 選修了3門以上課程的 )學生學號
②COUNT(*) 統計元組個數,該聚集函數作用於每一個組
③group by Sno 按學號分組

8、聚集函數
COUNT( [ DISTINCT | ALL ] *) 統計元組個數
SUM/AVG/MAX/MIN

9、order by排序(ASC/DESC) group by分組
Select *
From Student
Where …
Order By dept, age DESC (按系號升序,同系年齡降序)

查詢選修了3門以上課程的學生學號:
Select sno
From Sc
group by sno
Having Count(*) > 3
先按照sno進行分組,然後進行count的聚集計算。
where作用於基本表或視圖,having作用於

10、連接查詢、嵌套查詢
IN/ANY(SOME)/ALL/EXISTS

查詢所有選修了1號課程的學生姓名
Select sname
From Student
Where Exists
(
Select *
From Sc
Where Student.sno = sno AND
cno = ‘1’
);
【查詢過程】在student表中,拿出一個sno,用此值去檢查SC表,如果滿足(Student.sno = sno AND cno = ‘1’),則取student.sname送入結果表。

11、集合查詢
Union 並
Intersect 交
Except 差
————————————————————————————————————————————————
數據更新
Insert Into SC(sno, cno)
Values ….

Update table_name
Set age = age+1
Where …

Delete From table_name
Where ..
————————————————————————————————————————————————
視圖
Create View view_name( col _name … )
As
<子查詢> //where子查詢中不能包括:order by/distinct
[With Check Option] //進行update/insert/delete時保證子查詢中的條件表達式

Drop View view_name [Cascade]
————————————————————————————————————————————————
觸發器
Create Trigger trigger_name
Before/After Insert or Update
On table_name
For Each Row/Statement (行級或語句級觸發器)
————————————————————————————————————————————————
候選碼,候選碼就是可以區別一個元組(即表中的一行數據)的屬性或屬性的集合,比如學生表student(id,name,age,sex,deptno),其中的id是可以唯一標識一個元組的,所以id是可以作爲候選碼的,既然id都可以做候選碼了,那麼id和name這兩個屬性的組合可不可以唯一區別一個元組呢?顯然是可以的,
此時的id可以成爲碼,id和name的組合也可以成爲碼,但是id和name的組合不能稱之爲候選碼,因爲即使去掉name屬性,剩下的id屬性也完全可以唯一標識一個元組,就是說,候選碼中的所有屬性都是必須的,缺少了任何一個屬性,就不能唯一標識一個元組了,給候選碼下一個精確的定義就是:可以唯一標識一個元組的最少的屬性集合。而碼是沒有最少屬性這個要求的。
另外,一個表的候選碼可能有多個,從這些個候選碼中選擇一個做爲主碼,至於選擇哪一個候選碼,這個是無所謂的,只要是從候選碼中選的就行。
至於主屬性,剛纔提到了,一個表可以有多個候選碼,那麼對於某個屬性來說,如果這個屬性存在於所有的候選碼中,它就稱之爲主屬性

範式:
第一範式(1NF):屬性不可分。

第二範式(2NF):符合1NF,並且,非主屬性完全依賴於碼。
(注意是完全依賴不能是部分依賴,設有函數依賴W→A,若存在XW,有X→A成立,那麼稱W→A是局部依賴,否則就稱W→A是完全函數依賴)
有關係模式:S-L-C(sno, sdept, sloc, cno, grade) 非主屬性sdept sloc並不完全函數依賴於碼sno。

第三範式(3NF):符合2NF,並且,消除傳遞依賴(也就是每個非主屬性都不傳遞依賴於候選鍵,判斷傳遞函數依賴,指的是如果存在”A → B → C”的決定關係,則C傳遞函數依賴於A。)

BC範式(BCNF):符合3NF,並且,主屬性不依賴於主屬性(也就是不存在任何字段對任一候選關鍵字段的傳遞函數依賴)
參考:http://blog.csdn.net/kaiwii/article/details/7365758
————————————————————————————————————————————————
事務:
開始事物: Begin Transaction
提交事物: Commit
回滾事務:Rollback

4個屬性
● Atomic(原子性):事務中包含的操作被看做一個邏輯單元,這個邏輯單元中的操作要麼全部成功,要麼全部失敗。
● Consistency(一致性):只有合法的數據可以被寫入數據庫,否則事務應該將其回滾到最初狀態。
● Isolation(隔離性):事務允許多個用戶對同一個數據進行併發訪問,而不破壞數據的正確性和完整性。同時,並行事務的修改必須與其他並行事務的修改相互獨立
● Durability(持久性):事務結束後,事務處理的結果必須能夠得到固化

數據恢復
數據轉儲
日誌文件(按併發事務執行的時間次序、先寫日誌文件,後寫數據庫)

撤銷隊列:反向掃描日誌文件(故障發生時,尚未完成的事務)
重做隊列:正向掃描(故障前已經提交的事務)

併發控制:
事務是併發控制的基本單位

2、網絡

這裏寫圖片描述

網絡層:

IP地址:網絡號+主機號

IP地址與硬件地址的區別:《計算機網絡5th》P117
一個路由器至少擁有兩個IP地址和物理地址

ARP IP addres -> 物理地址
地址解析協議(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議
主機發送信息時將包含目標IP地址的ARP請求廣播到網絡上的所有主機(ARP請求),並接收返回消息,以此確定目標的物理地址;收到返回消息(ARP響應)後將該IP地址和物理地址存入本機ARP緩存中並保留一定時間,下次請求時直接查詢ARP緩存以節約資源。
解決同一個局域網上的主機或路由器的IP地址和硬件地址的映射。

RARP 物理地址 -> IP地址
反向地址轉換協議(Reverse Address Resolution Protocol) 允許局域網的物理機器從網關服務器的 ARP 表或者緩存上請求其 IP 地址

ICMP
ICMP是(Internet Control Message Protocol)Internet**控制**報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。

IGMP
Internet 組管理協議(Internet Group Management Protocol),是因特網協議家族中的一個組播協議。該協議運行在主機和組播路由器之間。

劃分子網的路由器轉發分組算法:《計算機網絡5th》P134

————————————端口號———————————————————————————————————————
端口:0
服務:Reserved
說明:通常用於分析操作系統。這一方法能夠工作是因爲在一些系統中“0”是無效端口,當你試圖使用通常的閉合端口連接它時將產生不同的結果。一種典型的掃描,使用IP地址爲0.0.0.0,設置ACK位並在以太網層廣播。

端口:1
服務:tcpmux
說明:這顯示有人在尋找SGI Irix機器。Irix是實現tcpmux的主要提供者,默認情況下tcpmux在這種系統中被打開。Irix機器在發佈是含有幾個默認的無密碼的帳戶,如:IP、GUEST UUCP、NUUCP、DEMOS 、TUTOR、DIAG、OUTOFBOX等。許多管理員在安裝後忘記刪除這些帳戶。因此HACKER在INTERNET上搜索tcpmux並利用這些帳戶。

端口:7
服務:Echo
說明:能看到許多人搜索Fraggle放大器時,發送到X.X.X.0和X.X.X.255的信息。

端口:19
服務:Character Generator
說明:這是一種僅僅發送字符的服務。UDP版本將會在收到UDP包後迴應含有垃圾字符的包。TCP連接時會發送含有垃圾字符的數據流直到連接關閉。HACKER利用IP欺騙可以發動DoS攻擊。僞造兩個chargen服務器之間的UDP包。同樣Fraggle DoS攻擊向目標地址的這個端口廣播一個帶有僞造受害者IP的數據包,受害者爲了迴應這些數據而過載。

端口:21
服務:FTP
說明:FTP服務器所開放的端口,用於上傳、下載。最常見的攻擊者用於尋找打開anonymous的FTP服務器的方法。這些服務器帶有可讀寫的目錄。木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的端口。

端口:22
服務:Ssh
說明:PcAnywhere建立的TCP和這一端口的連接可能是爲了尋找ssh。這一服務有許多弱點,如果配置成特定的模式,許多使用RSAREF庫的版本就會有不少的漏洞存在。

端口:23
服務:Telnet
說明:遠程登錄,入侵者在搜索遠程登錄UNIX的服務。大多數情況下掃描這一端口是爲了找到機器運行的操作系統。還有使用其他技術,入侵者也會找到密碼。木馬Tiny Telnet Server就開放這個端口。

端口:25
服務:SMTP
說明:SMTP服務器所開放的端口,用於發送郵件。入侵者尋找SMTP服務器是爲了傳遞他們的SPAM。入侵者的帳戶被關閉,他們需要連接到高帶寬的E-MAIL服務器上,將簡單的信息傳遞到不同的地址。木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個端口。

端口:53
服務:Domain Name Server(DNS)
說明:DNS服務器所開放的端口,入侵者可能是試圖進行區域傳遞(TCP),欺騙DNS(UDP)或隱藏其他的通信。因此防火牆常常過濾或記錄此端口。

端口:67
服務:Bootstrap Protocol Server
說明:通過DSL和Cable modem的防火牆常會看見大量發送到廣播地址255.255.255.255的數據。這些機器在向DHCP服務器請求一個地址。HACKER常進入它們,分配一個地址把自己作爲局部路由器而發起大量中間人(man-in-middle)攻擊。客戶端向68端口廣播請求配置,服務器向67端口廣播迴應請求。這種迴應使用廣播是因爲客戶端還不知道可以發送的IP地址。

端口:69
服務:Trival File Transfer
說明:許多服務器與bootp一起提供這項服務,便於從系統下載啓動代碼。但是它們常常由於錯誤配置而使入侵者能從系統中竊取任何 文件。它們也可用於系統寫入文件。

端口:79
服務:Finger Server
說明:入侵者用於獲得用戶信息,查詢操作系統,探測已知的緩衝區溢出錯誤,迴應從自己機器到其他機器Finger掃描。

端口:80
服務:HTTP
說明:用於網頁瀏覽。木馬Executor開放此端口。
———————————————————————————————————————————————————————
【ping/tracert命令基於ICMP協議】

 當你在瀏覽器輸入一個網址,如http://www.taobao.com,按回車之後發生了什麼?請從技術的角度描述,如瀏覽器、網絡(UDP、TCP、HTTP等),以及服務器等各種參與對象上由此引發的一系列活動,請儘可能的涉及到所有的關鍵技術點。

● DNS Lookup 先獲得URL對應的IP地址      
● Socket Connect 瀏覽器和服務器建立TCP連接
● Send Request 發送HTTP請求 瀏覽器發出取文件命令 get
● Content Download 服務器發送響應 服務器給出響應
①獲取IP地址
②建立TCP連接
③HTTP傳輸 (發送HTTP請求、響應HTTP請求、傳輸數據)
————————————————————————————————————————————————————————
① 進行DNS域名解析(先獲得URL對應的IP地址)
首先是查找瀏覽器緩存,瀏覽器會保存一段時間你之前訪問過的一些網址的DNS信息,不同瀏覽器保存的時常不等。
如果沒有找到對應的記錄,這個時候瀏覽器會嘗試調用系統緩存來繼續查找這個網址的對應DNS信息。
如果還是沒找到對應的IP,那麼接着會發送一個請求到路由器上,然後路由器在自己的路由器緩存上查找記錄,路由器一般也存有DNS信息。
如果還是沒有,這個請求就會被髮送到ISP(注:Internet Service Provider,互聯網服務提供商,就是那些拉網線到你家裏的運營商,中國電信中國移動什麼的),ISP也會有相應的ISP DNS服務器。題外話:會跑到這裏進行查詢是因爲你沒有改動過”網絡中心”的”ipv4”的DNS地址,萬惡的電信聯通可以改動了這個DNS服務器,換句話說他們可以讓你的瀏覽器跳轉到他們設定的頁面上,這也就是人盡皆知的DNS和HTTP劫持,ISP們還美名曰“免費推送服務”。強烈鄙視這種霸王行爲。我們也可以自行修改DNS服務器來防止DNS被ISP污染。
如果還是沒有的話, 你的ISP的DNS服務器會將請求發向根域名服務器進行搜索。根域名服務器就是面向全球的頂級DNS服務器,共有13臺邏輯上的服務器,從A到M命名,真正的實體服務器則有幾百臺,分佈於全球各大洲。所以這些服務器有真正完整的DNS數據庫。如果到了這裏還是找不到域名的對應信息,那隻能說明一個問題:這個域名本來就不存在,它沒有在網上正式註冊過。或者賣域名的把它回收掉了(通常是因爲欠費)。
這也就是爲什麼打開一個新頁面會有點慢,因爲本地沒什麼緩存,要這樣遞歸地查詢下去。
多說一句,例如”mp3.baidu.com”,域名先是解析出這是個.com的域名,然後跑到管理.com域名的服務器上進行進一步查詢,然後是.baidu,最後是mp3,
所以域名結構爲:三級域名.二級域名.一級域名。
② 瀏覽器給這個IP的服務器發送一個http請求
瀏覽器終於得到了IP以後,瀏覽器接着給這個IP的服務器發送了一個http請求,方式爲get,例如訪問nbut.cn
這裏寫圖片描述
這個get請求包含了主機(host)、用戶代理(User-Agent),用戶代理就是自己的瀏覽器,它是你的”代理人”,Connection(連接屬性)中的keep-alive表示瀏覽器告訴對方服務器在傳輸完現在請求的內容後不要斷開連接,不斷開的話下次繼續連接速度就很快了。其他的顧名思義就行了。
還有一個重點是Cookies,Cookies保存了用戶的登陸信息,在每次向服務器發送請求的時候會重複發送給服務器。Chrome上的F12與Firefox上的firebug(快捷鍵shift+F5)均可查看這些信息。
發送完請求接下來就是等待迴應了,如下圖:
這裏寫圖片描述
③ WEB服務器解析HTTP請求
當然了,服務器收到瀏覽器的請求以後(其實是WEB服務器接收到了這個請求,WEB服務器有iis、apache等),它會解析這個請求(讀請求頭),然後生成一個響應頭和具體響應內容。
接着服務器會傳回來一個響應頭和一個響應,響應頭告訴了瀏覽器一些必要的信息,例如重要的Status Code,2開頭如200表示一切正常,3開頭表示重定向,4開頭,如404,呵呵。響應就是具體的頁面編碼,就是那個……,瀏覽器先讀了關於這個響應的說明書(響應頭),然後開始解析這個響應並在頁面上顯示出來。在下一次CF的時候(是http://codeforces.com/),由於經常難以承受幾千人的同時訪問,所以CF頁面經常會出現崩潰頁面,到時候可以點開火狐的firebug或是Chrome的F12看看狀態。
如果是個靜態頁面,那麼基本上到這一步就沒了,但是如今的網站幾乎沒有靜態的了吧,基本全是動態的。所以這時候事情還沒完,根據我們的經驗,瀏覽器打開一個網址的時候會慢慢加載這個頁面,一部分一部分的顯示,直到完全顯示,最後標籤欄上的圈圈就不轉了。
這裏寫圖片描述
這是因爲,主頁(index)頁面框架傳送過來以後,瀏覽器還要繼續向服務器發送請求,請求的內容是主頁裏面包含的一些資源,如圖片,視頻,css樣式等等。這些”非靜態”的東西要一點點地請求過來,所以標籤欄轉啊轉,內容刷啊刷,最後全部請求並加載好了就終於好了。
這裏寫圖片描述
需要說明的是,對於靜態的頁面內容,瀏覽器通常會進行緩存,而對於動態的內容,瀏覽器通常不會進行緩存。緩存的內容通常也不會保存很久,因爲難保網站不會被改動。

這裏寫圖片描述
參考:http://www.huashengjp.com/zonghepindao/shehuixinwen/shehuiqiwen/201501/00140971.html

TCP連接與釋放

①TCP三次握手連接
客戶端A 服務端B
A向B發送SYN同步報文 進入SYN-SENT 同步已發送狀態
B向A發送ACK + SYN 確認同步 進入SYN-RCVD同步已收到狀態
A向B發送ACK 再次確認同步。 進入ESTAB-LISHED已連接狀態
第三次的作用是(即客戶端向服務器的第二次確認):
防止客戶端第一次發給服務器端的連接請求的報文因滯留而延誤發送給服務器,導致服務器第二次給出確認(第一次給出的確認(是正確的)是在客戶端長時間未得到回覆後,再次發送第二個連接請求,服務器給出的連接確認。)。
當服務器第二次給出確認時,客戶端可不予理睬,因爲它本身知道自己不需要連接服務器了,之前已經連接過了。再次確認客戶端是否真的需要連接。
TCP規定,SYN同步報文段不發送數據,所有第三次確認時可用攜帶數據。
——————————————————————————————————————————————————————
TCP Flags:TCP首部中有6個標誌比特,它們中的多個可同時被設置爲1,主要是用於操控TCP的狀態機的,依次爲URG,ACK,PSH,RST,SYN,FIN。每個標誌位的意思如下:
URG:此標誌表示TCP包的緊急指針域(後面馬上就要說到)有效,用來保證TCP連接不被中斷,並且督促中間層設備要儘快處理這些數據;
ACK:此標誌表示應答域有效,就是說前面所說的TCP應答號將會包含在TCP數據包中;有兩個取值:0和1,爲1的時候表示應答域有效,反之爲0;
PSH:這個標誌位表示Push操作。所謂Push操作就是指在數據包到達接收端以後,立即傳送給應用程序,而不是在緩衝區中排隊;
RST:這個標誌表示連接復位請求。用來複位那些產生錯誤的連接,也被用來拒絕錯誤和非法的數據包;
SYN:表示同步序號,用來建立連接。SYN標誌位和ACK標誌位搭配使用,當連接請求的時候,SYN=1,ACK=0;連接被響應的時候,SYN=1,ACK=1;這個標誌的數據包經常被用來進行端口掃描。掃描者發送一個只有SYN的數據包,如果對方主機響應了一個數據包回來 ,就表明這臺主機存在這個端口;但是由於這種掃描方式只是進行TCP三次握手的第一次握手,因此這種掃描的成功表示被掃描的機器不很安全,一臺安全的主機將會強制要求一個連接嚴格的進行TCP的三次握手;
FIN: 表示發送端已經達到數據末尾,也就是說雙方的數據傳送完成,沒有數據可以傳送了,發送FIN標誌位的TCP數據包後,連接將被斷開。這個標誌的數據包也經常被用於進行端口掃描。

這裏寫圖片描述
這裏寫圖片描述

第一次握手:建立連接。客戶端發送連接請求報文段,將SYN位置爲1,Sequence Number爲x;然後,客戶端進入SYN_SEND狀態,等待服務器的確認;
第二次握手:服務器收到SYN報文段。服務器收到客戶端的SYN報文段,需要對這個SYN報文段進行確認,設置Acknowledgment Number爲x+1(Sequence Number+1);同時,自己自己還要發送SYN請求信息,將SYN位置爲1,Sequence Number爲y;服務器端將上述所有信息放到一個報文段(即SYN+ACK報文段)中,一併發送給客戶端,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK報文段。然後將Acknowledgment Number設置爲y+1,向服務器發送ACK報文段,這個報文段發送完畢以後,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。
完成了三次握手,客戶端和服務器端就可以開始傳送數據。以上就是TCP三次握手的總體介紹。

參考:簡析TCP的三次握手與四次分手

②TCP連接釋放
客戶端A 服務端B
首先,A向B發送終止連接報文,B向A發送確認 此時A->B的方向連接中斷,但B仍可以向A發送數據。
然後,B向A發送終止連接報文,A向B發送確認 此時B->A的方向連接中斷,整個連接終止。

3、操作系統

1、Linux常用命令
http://blog.csdn.net/ljianhui/article/details/11100625

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章