programmer撰寫網路AP,可以完全不用知道網路底層技術與資料通訊協定。
在建立connection(socket)後,就可以透過它來做R/W,send and recieve
一個socket是一對(ip,port)之組合。
C/S架構朝向P2P發展,P2P也可以說是包含一對C/S得架構(C/S,S/C)。
client要提request,必須提出要向誰要request,
ex) client要request nsysu web server,提出 (140.117.11.112,80),當然使用者不會記住ip之資訊,所以也可用domain name來代替(www.nsysu.edu.tw,http)
收送資料之前,要建立connection,資料送收後要中斷
使用API,可以把網路的複雜度蓋起來,底層不用理會
需要哪些API來寫網路應用程式?
await_contact : server一開始呼叫API await_contact,server 會listen在一個service port
make_contact : Client向server提出request時使用
cname_to_comp : 把domain name 對應成IP
appname_to_appnum : ex) http->80,telnet->23,ftp->21 ; well-known port <= 1024
send
recv
send_eof : 結束
Server一開始一定要先listen在一個service port上面(透過await_contact),Client提出request(透過make_contact),然後收送資料(send,recv),結束後Server送(send_eof)中斷此連線。
ps -aux : 看目前所有的process
netstat : 看目前所有的connection
平時server run一個super daemon,然後看client要求哪一個service,再呼叫對應的server daemon 。