![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/JnJVO/btrO4oEgsnw/psnEXy1lJSuKA2eO0ulcR1/img.png)
3.1 트랜스포트 계층 서비스 및 개요 트랜스포트 계층 프로토콜 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적 통신을 제공한다. 네트워크 라우터가 아닌 종단 시스템에서 구현된다. 세그먼트(segment) 송신 측의 트랜스포트 계층은 송신 애플리케이션 프로세스로부터 수신한 메시지를 트랜스포트 계층 패킷으로 변환한다. 이를 세그먼트라고 부른다. 이러한 변환은 애플리케이션 메시지를 트랜스포트 계층 세그먼트로 만들기 위해 작은 조각으로 분할하고, 각각의 조각에 트랜스포트 계층 헤더를 추가함으로써 수행된다. 3.1.1 트랜스포트 계층과 네트워크 계층 사이의 관계 트랜스포트 계층 프로토콜 서로 다른 호스트에서 동작하는 프로세스들 사이의 논리적 통신을 제공 네트워크 계층 프로토콜 호스트들 사이의 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wUaTR/btrOq2W0gPF/DchVCmEWLnu8iwYgx6AOcK/img.png)
다음의 간단한 클라이언트-서버 애플리케이션을 UDP와 TCP로 구현해보자. 클라이언트는 키보드로부터 한 줄의 문자(데이터)를 읽고 그 데이터를 서버로 보낸다. 서버는 그 데이터를 수신하고 문자를 대문자로 변환한다. 서버는 수정된 데이터를 클라이언트에게 보낸다. 클라이언트는 수정된 데이터를 수니하고 그 줄을 화면에 나타낸다. 2.7.1 UDP를 이용한 소켓 프로그래밍 송신 프로세스가 데이터의 패킷을 소켓 문 밖으로 밀어내기 전에, UDP를 사용할 때 먼저 패킷에 목적지 주소를 붙여 넣어야 한다. 이 패킷이 송신자의 소켓을 통과한 후 인터넷은 이 목적지 주소를 이용하여 그 패킷을 인터넷을 통해 수신 프로세스에 있는 소켓으로 라우트할 것이다. 패킷이 수신 소켓에 도착하면 수신 프로세스는 소켓을 통해 그 패킷을..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/edUMzo/btrOscxvG0B/vJjnJaNkgkxkqQUEfKtdp0/img.png)
2.5 P2P 파일 분배 클라이언트-서버 파일 분배에서 서버는 파일 복사본을 각 피어들에게 보내야 한다. 서버에서 커다란 부하를 주고 많은 양의 서버 대역폭을 소비한다. P2P 파일 분배에서 각 피어는 수신한 파일의 임의의 부분을 다른 피어들에게 재분배할 수 있어서 서버의 분배 프로세스를 도울 수 있다. P2P 파일 분배 프로토콜 중 유명한 것으로 비트토렌트가 있다. P2P의 핵심은 데이터가 어디있는지 알아내는 것이다! 1. P2P 구조의 확장성 분배 시간(distribution time) 모든 N개의 피어들이 파일의 복사본을 얻는 데 걸리는 시간이다. 클라이언트-서버 피어의 수가 증가함에 따라 분배 시간이 선형적으로 그리고 한계 없이 증가하는 것을 알 수 있다. P2P 구조 최소 분배 시간이 클라이언트..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/DC4Qg/btrOmKH7IoI/1VkonO1jTLwvTZJQMfxDK1/img.png)
2.4 DNS - 인터넷 디렉터리 서비스 사람을 이름, 주민번호 등으로 식별하는 것과 마찬가지로 인터넷 호스트에 대한 하나의 식별자를 호스트 네임(hostname)이라고 한다. 예) www.facebook.com, www.google.com, gaia.cs.umass.edu 호스트 네임 호스트 위치에 대한 정보를 거의 제공하지 않는다. 가변 길이의 알파뉴메릭 문자로 구성되므로 라우터가 처리하는 데 어려움이 있다. 호스트는 흔히 말하는 IP 주소로도 식별된다. IP 주소 4바이트로 구성되고 계층구조를 갖는다. 0~255의 십진수로 표현하는 각 바이트는 점으로 구분한다. IP주소는 계층구조여서 주소를 왼쪽에서 오른쪽으로 조사함으로써, 그 호스트가 인터넷의어디에 위치하는지에 대한 자세한 정보를 얻을 수 있다...
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b1HljE/btrOo55OVwi/ykdqViYrkmFJYcKGsFkzxK/img.png)
2.3 인터넷 전자메일 아래 그림은 인터넷 메일 시스템의 상위 레벨 개념을 보여 준다. 사용자 에이전트, 메일 서버, SMTP(Simple Mail Transfer Protocol)라는 3개 주요 요소가 있음을 알 수 있다. 이제 이들 각 요소들은 송신자 앨리스가 수신자 밥에게 전자메일을 보내는 상황에서 기술한다. 사용자 에이전트 사용자가 메시지를 읽고, 응답하고, 전달하고, 저장하고, 구성하게 해준다. MS 아웃룩과 애플 메일은 전자메일을 위한 사용자 에이전트의 예이다. 앨리스가 메시지 작성을 끝내면 사용자 에이전트는 메시지를 메일 서버로 보내고 거기서 메시지는 메일 서버의 출력 메시지 큐에 들어간다. 밥이 메시지를 읽고 싶을 때, 그의 사용자 에이전트는 메일 서버에 있는 메일박스에서 메시지를 가져온다..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dgRp62/btrOkcMGvty/7CVIkzBWkOC93Iq9NWFabk/img.png)
2.2 웹과 HTTP 2.2.1 HTTP 개요 HTTP: HyperText Transfer Protocol 클라이언트 프로그램과 서버 프로그램 두가지 프로그램으로 구현된다. 서로 다른 종단 시스템에서 수행되는 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메시지를 교환하여 통신한다. HTTP는 메시지의 구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있다. 웹 페이지의 구성 대부분의 웹 페이지는 기본 HTML 파일과 여러 참조 객체로 구성된다. 객체 단순히 단일 URL로 지정할 수 있는 하나의 파일이다. 기본 HTML 파일 페이지 내부의 다른 객체를 그 객체의 URL로 참조한다. 각 URL은 2개의 요소, 즉 객체를 갖고 있는 서버의 호스트 네임과 객체의 경로 이름을 갖고 있..