본문 바로가기

728x90

ComputerScience/Network

(61)
Application Layer - 4. e-mail, DNS, video streaming 1. Mail access protocols e-mail(Electronic Mail in the Internet)을 보낼때는 SMTP 프로토콜을 사용한다. 1. email client A가 SMTP를 사용해서 sender's mail server로 메일을 보낸다. 2. sender side mail server가 receiver side mail server에게 SMTP로 메일을 보낸다. 3. email client B는 자신의 메일 서버로부터 mail access protocol을 사용해서 메일을 확인한다. 오늘날에는 gmail, naver mail, office 365처럼 http를 사용해서 client가 자신의 mail server를 확인할 수 있도록 한다. 2. DNS internet을 사용하는..
Application Layer - 3. Web, HTTP 1. Web Web은 우리가 너무 잘 알고 있다. web page는 이미지, 음성, html file등 여러 objects를 포함하고 있다. 각 object들의 address를 URL로 나타낸다. 2. HTTP(hypertext transfer protocol) 거의 모든 웹 브라우저, 웹 서버는 http 프로토콜을 사용한다. client/server model에서 http동작을 살펴보자. client는 browser를 통해 web server에게 object를 달라고 http요청을한다. 서버는 그 요청의 응답으로 해당 object를 http를 통해 보내준다. http는 기본적으로 tcp를 사용한다. 따라서 client가 먼저 서버와의 TCP connection을 시도한다. 이때 보통 port는 80을 ..
Socket programming (Golang) 소켓프로그래밍에서 C, Java, Python이 사용하는 api는 유사한 키워드로 구성되어 있다. 이번에는 지난 시간 살펴본 간단한 UDP, TCP 통신을 구현하고 실행해본다. 서버가 여러 client를 지원하기 위해서는 언어가 multi-thread, non blocking socket을 지원해야 한다. 대표적으로 C/Java/Python이 이에 해당한다. 하지만 이번에는 Go라는 언어를 사용할 것이다. Go는 Go routine을 사용하는데 쉽게 말하면 light-weight threads를 사용하는 접근법이다. 더 효율적이고 쉽다고 한다.(multi-thread 와는 살짝 다르다) python, golang으로 만든 소켓통신 프로그램은 서로 통신이 가능하다. *참고로 go로 짠 script를 빌드하..
Socket programming (Python) 1. TCP Socket programming TCP client 1. 패킷을 전송하고 싶은 server의 이름(ex. nsl2.cau.ac.kr) port번호(ex. 0119)를 적는다. 2. 서버와 클라이언트가 한 machine에서 돌아간다면 local port(client port)와 server port는 반드시 다른걸 써야 한다. (ip가 동일하니까 port로 구분해야 한다.) 3. 지정한 서버로 connect요청 4. 메시지를 담아서 client socket을 통해 서버로 전송한다. (연결이 되었기 때문에 ip, port가 필요없다.) 5. client socket을 통해서 서버로부터 온 메시지를 읽는다. 코드의 1024은 받을 버퍼의 크기를 제한한 것이다. 5. 메시지 출력, 소켓 통신 종..
Application Layer - 2. transport layer service, TCP/UDP 이전 시간에 application이 필요로 하는 transport service에 대해 알아보았다. 1. TCP internet transport protocol 중 하나로 가장 유명하다. reliable transport : 100% 신뢰성을 보장한다. (전송 보장) flow control : sender는 receiver의 buffer크기, 메모리를 초과해서 보내지 않는다. (receiver가 너무 바쁘면 천천히 보낸다) congestion control : network가 너무 바쁘면(overloaded) sender는 보내는 양을 조절한다(throttle) in-order보장. 반면에 timing, minimun throughput, security는 보장하지 않는다. connecton-orien..
Application Layer - 1. Introduction 통신을 필요로하는 다양한 application이 있다. ex) e-mail, web, text message, voice talk, streaming stored video 다양한 application들은 end system(host)에서 돌아가는 프로그램이다. ex) 웹브라우저(application)가 network를 통해 web server와 통신한다. 이런 응용들은 network core device를 고려하지 않고 개발 된다. (통신 중간에 무슨일이 일어날지 신경쓸 필요가 없다.) 오직 end system인 host와 server만 고려하면 된다. 이런 구조가, 빠른 서비스 개발이 가능하도록 했고 인터넷 발전의 박차를 가했다. 1. client server architecture server : ..
Wireshark : Sniff HTTP traffic wireshark는 packet sniffer sofware이다. packet capture library(pcap)가 운영체제 단에서 왔다갔다 하는 모든 패킷의 내용을 볼수 있게 해준다. pcap이 운영체제단으로 들어오고 나가는 모든 패킷을 복사해놓기 때문이다. pcap이 복사해놓은 패킷을 packet analyzer가 우리에게 보여주는 것이다. application단에 있는 우리는 패킷이 왔다갔다할 때, Message를 제외한 내용을 보도록 의도된 것이 아니기 때문에 pcap의 도움이 필요하다. 패킷을 훔쳐보는 건 사실 해커가 하는 동작과 다르지 않다. 0. wireshark실습 준비 실습에 앞서 기본적인 사항 몇 가지를 알고 가자. 1. ip를 확인하려면 macOS에서는 ifconfig 명령어를 사..
History of Computer Networking and the Internet History 1961 Kleinrock의 queueing theory가 packet-switching의 효과를 입증하고나서부터 packet-switching의 시대가 열렸다. 1970 ALOHAnet satelite network가 처음 등장했다. (최초 무선 네트워크) 1974 Cerf, Kahn이 최초로 interconnecting networks를 위한 architecture의 아이디어를 제시했다. - minimalism : 모두를 연결하기 위해, 인터넷을 사용하기위한 internal changes가 요구되지 않는다 - best effort service model : 항상 최선의 성능을 보장할 필요가 없다. 그냥 되기만 하면 된다 - stateless routers : 라우터는 최대한 simpl..

728x90