[네트워크] 4 & 5차시 - 응용계층(1), (2)
2023. 2. 22. 21:12ㆍCS/네트워크
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
응용계층의 개요에 대하여 설명한다. 클라이언트/서버, 소켓 통신에 대하여 배운다.
1. 응용계층
- 카톡, 스타그래프트 같은 네트워크 게임, 인터넷 검색, 인터넷 브라우저 상의 응용(구글 검색, 웹툰, 신문, 블로그, 카페, 금융), 메일
- 많은 서비스들을 서로 다른 프로토콜을 이용한다고 하면 문제가 많다. → 굉장히 많은 서비스들이 웹 브라우저를 사용, 인터넷 브라우저로 만들어진 HTML과 HTTP를 이용한 세션계층과 표현계층을 이용하면 응용계층만 구현하면 된다.
- 큰 틀에서 봤을 때 대략 어떠한 구조를 가져갈 것인가?
- 구조가 정의되어 있다면 기존의 세션, 프레젠테이션 계층을 사용할 수 있는가?
2. 네트워크 응용의 구조
- Client - Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조, 안정적
- 서버: 서비스를 제공해 주는 특별한 장치, 언제나 원하는 서비스를 받을 수 있다.
- 클라이언트: 서비스 요청
- 예) 웹 검색(언제나 서버가 켜져 있는 구조)
- Peer-to-Peer(P2P) 구조: 클라이언트나 서버란 개념 없이, 오로지 동등한 계층 노드들(peer nodes)이 서로 클라이언트와 서버 역할을 동시에 네트워크 위에서 하는 구조
- 예) 토렌트(원하는 파일을 제공하는 다른 사용자가 없다면 파일을 받을 수 없다)
- 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조, 효율적
- 예) skype(인터넷 전화 통화): 누가 접속을 했고, 전화를 걸 때 누구에게 어떻게 전화를 걸지에 대해서는 서버가 관리를 하지만, 통화를 시작하게 되면 통화를 하는 연결 자체에는 서버가 관여하지 않음
- 예) 스타크래프트: 누가 접속 했고 등의 게임 시작 전까지는 서버가 관리하지만 게임 시작 후에는 정보가 세팅되어 있기 때문에 실제 게임은 P2P
3. 프로세스 간 통신
- 응용계층을 설계하기 위해서는 통신계층이 어떠한 방법론을 제공하는지를 알아야 제대로 된 응용계층을 만들 수 있다.
- 응용: 네트워크로 연결된 컴퓨터들이 협력하여 제공하는 서비스
- 예) 구글 검색: 클라이언트 단말 - (네트워크) - 서버 단말의 협력
- 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
- 클라이언트 단말에서 웹 브라우저를 띄우면 → 하나의 컴퓨터에서 독립된 메모리 공간에서 웹 브라우저가 동작 → 웹 브라우저 하나는 하나의 클라이언트 프로세스가 됨 → 클라이언트 프로세스는 웹 서버 프로세스에게 통신을 요청 → 웹서버가 그에 대한 응답을 웹 브라우저에게 줌
- 전체를 아우르는 것을 하나의 응용
- 응용을 구성하는 각 컴퓨터에서 돌아가는 독립적인 프로그램을 프로세스라고 부름
- 클라이언트 단말에서 웹 브라우저를 띄우면 → 하나의 컴퓨터에서 독립된 메모리 공간에서 웹 브라우저가 동작 → 웹 브라우저 하나는 하나의 클라이언트 프로세스가 됨 → 클라이언트 프로세스는 웹 서버 프로세스에게 통신을 요청 → 웹서버가 그에 대한 응답을 웹 브라우저에게 줌
- 프로세스 간 통신: 응용을 이룰 때 어떻게 웹브라우저가 웹서버와 통신을 하게 될 것인가
- 클라이언트 프로세스
- 서버 프로세스
- 피어 프로세스
- 프로세스 주소: 어떻게 프로세스를 찾을 것인가, IP 주소 + 포트 번호
- 기계 주소: IP 주소: xxx.xxx.xxx.xxx
- xxx는 0에서 255 사이의 정수 값을 가짐, 256 ^ 4까지 표현(2^32 = 약 40억)
- 176.37.1.4는 하나의 IP 주소 - 원칙적으로는 각 IP 주소가 하나의 기계를 가리켜야 하지만 IP 주소의 개수에 한계가 있기 때문에 IP를 나누어 쓴다.
- 포트번호: 패킷이 누구에게 가는지를 찾기 위한 이름표
- 2^16개의 TCP와 2^16개의 UDP → 총 2^32개의 포트
- 주로 TCP 포트를 사용, UDP 포트는 제한적인 경우에 사용
- 176.37.1.4의 TCP 80에 접속하면 클라이언트가 보낸 패킷은 웹 서버에게
- 176.37.1.4의 TCP 24에 접속하면 클라이언트가 보낸 패킷은 메일 서버에게
- 클라이언트의 웹브라우저는 포트 번호가 정해져 있지 않음
- 클라이언트의 프로그램은 언제나 서버 프로그램에 접속하지만 보통은 서버 프로그램이 클라이언트 프로그램에 먼저 접속하지는 않음
- 편지봉투에 보내는 사람과 받는 사람의 주소가 모두 적혀 있기 때문에 웹서버에서 응답을 보낼 수 있다.
- 기계 주소: IP 주소: xxx.xxx.xxx.xxx
- 소켓 통신: 응용 계층을 위한 API
- 소켓: 전송계층과 세션계층을 연결해 주는 일종의 인터페이스
- 통신을 하게 되면 마구잡이로 통신하는 것이 아니라 한 번 대상을 잡으면 그 대상과 자주 통신을 함
→ private channel에 하나의 소켓을 열어두면 받는 사람의 주소, 나의 주소를 일일이 적지 않아도 만들어 둔 소켓을 통해서 연결된 대상과 주기적으로 통신할 수 있다.
- 통신을 하게 되면 마구잡이로 통신하는 것이 아니라 한 번 대상을 잡으면 그 대상과 자주 통신을 함
- 소켓: 전송계층과 세션계층을 연결해 주는 일종의 인터페이스
4. 인터넷 전송계층의 서비스
- TCP: 연결기반 전송 계층
- 두 개의 프로세스의 소켓을 열고 네트워크로 연결한 후에 통신
- 연결에 대한 관리
- 데이터 유실 - 패킷은 언제든 유실될 수 있음(스위치가 죽거나, 잡음으로 패킷이 깨지거나, 데이터가 너무 많아서 스위치가 데이터를 잃어버릴 수 있음)
→ 데이터 유실 복구 서비스 제공 ~ 한 번 보낸 패킷은 반드시 목적지에 도착한다고 가정하며 프로그래밍할 수 있음
- 데이터 유실 - 패킷은 언제든 유실될 수 있음(스위치가 죽거나, 잡음으로 패킷이 깨지거나, 데이터가 너무 많아서 스위치가 데이터를 잃어버릴 수 있음)
- 데이터 순서 보장
- 혼잡에 민감한 패킷 전송률 조정: 패킷의 유실률이 높으면 네트워크가 혼잡하다고 판단해서 데이터를 천천히 보냄
- UDP: 무연결 전송 계층
- 두 개의 프로세스의 소켓은 열지만 연결은 없음
- 연결을 만들어 놓지 않고 매 패킷마다 받는 사람의 주소를 써서 패킷에 담아 보냄
- 연결에 대한 관리가 없음
- 데이터 유실 가능: 데이터가 사라지면 그냥 사라지는 것
- 데이터 순서 역전 가능
- 최대한 성능으로 패킷 전송(실시간성 중요)
[복습]
- 기존의 세션계층과 표현계층을 사용해서 새로운 응용 계층을 구현할 수 있는지
- 네트워크 응용의 구조
- Client-Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조
- Peer-to-Peer 구조: client와 server가 구분되어 있지 않고 서로가 동시에 client와 server 역할을 하는 구조
- 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조
- 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
- 프로세스 간 통신: 클라이언트 프로세스, 서버 프로세스, 피어 프로세스
- 프로세스 주소: IP 주소 + 포트 번호
- 클라이언트의 웹브라우저는 포트번호가 정해져 있지 않지만, 보통 클라이언트 프로그램이 서버 프로그램에 먼저 접속하기 때문에 클라이언트가 보내는 편지봉투(소켓)에 있는 출발지, 목적지 정보를 통해 클라이언트 프로그램에 접속할 수 있다.
- 소켓: 전송 계층과 세션 계층을 연결해 주는 일종의 인터페이스로 각각 하나의 소켓을 private channel에 열어두면 출발지와 목적지를 일일이 적지 않아도 만들어둔 소켓을 통해서 연결된 대상과 주기적으로 통신할 수 있다.
- TCP: 연결 기반 전송 계층
- 연결에 대한 관리를 하기 때문에 패킷 유실 복구 서비스 제공, 데이터 순서 보장, 혼잡에 민감한 패킷 전송률 조정
- UDP: 무연결 기반 전송 계층
- 연결에 대한 관리를 하지 않기 때문에 패킷이 유실될 수 있다, 데이터의 순서가 역전될 수 있고 최대한의 속도로 패킷을 전송하기 때문에 실시간성이 중요한 곳에 사용됨(ex. 비행기)
한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다. 감사합니다.
http://www.kocw.net/home/m/cview.do?lid=84f7de186deb824c
http://www.kocw.net/home/m/cview.do?lid=c0f5c5b5174a36a4
http://www.kocw.net/home/m/cview.do?lid=880966f63e3631a3
728x90
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 6차시 - 응용계층(3)-2 (0) | 2023.03.09 |
---|---|
[네트워크] 6차시 - 응용계층(3)-1 (0) | 2023.03.09 |
[네트워크] 3차시 - 컴퓨터 네트워크의 계층 (0) | 2023.02.10 |
[네트워크] 2차시 - 컴퓨터 네트워크의 품질 기준 (0) | 2023.02.07 |
[네트워크] 1차시 - 컴퓨터 네트워크의 소개 (1), (2), (3) (0) | 2023.02.06 |