[네트워크] 응용계층 복습 및 정리
2023. 4. 18. 17:48ㆍCS/네트워크
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
1. 응용계층
1-1. 네트워크 응용의 구조
- Client-Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조
- Peer-to-Peer(P2P) 구조: 클라이언트나 서버 개념 없이, 오로지 동등한 계층 노드들이 서로 클라이언트와 서버 역할을 동시에 네트워크 위에서 하는 구조
- 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조
1-2. 프로세스 간 통신
- 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위
- 프로세스 주소: IP 주소 + 포트 번호
- 클라이언트의 웹브라우저는 포트번호가 정해져 있지 않음
- 소켓: 전송계층과 세션계층을 연결해주는 일종의 인터페이스로, private channel에 하나의 소켓을 열어두면 받는 사람의 주소와 나의 주소를 일일이 적지 않아도 만들어 둔 소켓을 통해서 연결된 대상과 주기적으로 통신할 수 있다.
1-3. 인터넷 전송 계층의 서비스
- TCP: 연결 기반 전송 계층, 연결에 대한 관리(데이터 유실 복구 서비스 제공), 데이터 순서 보장, 혼잡에 민감한 패킷 전송률 조정
- UDP: 무연결 전송 계층, 연결에 대한 관리가 없음(데이터 유실 가능), 데이터 순서 역전 가능, 최대한의 성능으로 패킷을 전송
- 연결을 만들어 놓지 않고 매 패킷마다 받는 사람이 주소를 써서 패킷에 담아 보내야 함
2. 세션계층
- 세션계층: 컴퓨터끼리 어떻게 대화를 하는지에 대한 세부적인 내용에 대한 계층
- FTP(File Transfer Protocol): 원격 호스트에 있는 파일을 가져오거나 보내기 위한 프로토콜
- 세션 로그인과 종료가 존재
- 로그인을 통하여 파일에 접근할 수 있는 권한 획득
- 로그인 정보를 서버가 관리 → stateful protocol
- 서버는 내 세션의 정보를 계속 유지하고 있다가 적절한 서비스를 제공해준다: 세션 계층의 역할
- HTTP(Hyper Text Protocol): HTML을 기본 프레젠테이션 계층으로 사용하는 프로토콜
- 상태 정보를 이용하지 않음 → stateless protocol
2-1. HTTP
- 원하는 자료를 웹에 보내고 웹에서 받는 기본적인 동작
- 인터넷 브라우저의 주소창에 url을 검색 → 웹 브라우저는 요청하는 패킷을 웹 서버에 보내고 → 웹서버는 html문서를 응답하는 패킷으로 보냄
- HTTP는 프로토콜이 단순하다.
- HTTP Transaction: 요청에 대해 응답을 하면 끝나고
- Stateless Protocol: 한 번의 transaction이 끝나면 서버가 정보를 기억할 필요가 없다.
2-2. GET요청
- 원하는 자원을 가져오는 목적을 가지고 수행
- HTTP 요청 헤더
- 서버의 응답 형식(헤더 + 바디)
- 하나의 트랜젝션으로는 하나의 파일 밖에 가져오지 못하기 때문에 한 페이지 안에 있는 다른 파일을 가져오는 트랜젝션을 추가적으로 수행해야 한다.
2-3. POST 요청
- 자원을 서버에 게시하는 목적, 게시할 내용을 바디에 함께 보냄
- method = “get”으로도 자원을 서버에 게시할 수 있지만 이 때는 바디가 아닌 url을 이용해서 하나하나 보내야 함
- URL ? 입력한 내용 = URI
- URL: 자원의 위치
- URI: 동적으로 생성된 자원의 위치
- URL ? 입력한 내용 = URI
- 간단한 내용은 get을 이용하고, 내용이 길어지거나 숨기고 싶은 내용을 보낼 때는 post를 이용
2-4. 쿠키
- 웹서버는 서버 응용 - 서버 응용 엔진 - HTTP(stateless)의 과정을 거치는데 서버 응용과 세션 계층은 stateless → 서버 응용이 앞의 요청과 뒤 요청이 동일한 사람인지를 구별하는 방법이 필요하다.
- 쿠키: 서버 응용이 클라이언트의 이전 작업 정보(state)를 파악하기 위한 도구
- 서버 응용은 이전 정보를 가지고 있지 않지만 get요청 안에 있는 cookie 정보를 보고 이전에 접속했던 사용자임을 구분할 수 있다.
- 기억해야 할 상황을 쿠키에 담아 클라이언트가 기억하도록 하고 서버는 클라이언트의 방문 시 주는 쿠키 정보에 맞추어 반환하게 되면 클라이언트에게 너무 많은 권한과 정보를 준다는 문제가 있다.
- 클라이언트에게 세션 ID 정보만 쿠키로 전달하고 세션들의 특성은 서버가 관리하는 방법이 있다.
2-5. 다중 Transaction
- 기본 HTTP: 하나의 트랜잭션을 수행하고 TCP 연결을 종결
- Persistent HTTP: 한 번의 TCP 연결만으로 많은 트랜잭션을 수행
- Pipelined HTTP: html 문서를 받은 후에 request를 연속적으로 요청
- 성능을 측정할 때 고려해야 할 요소
- 지연시간: 패킷을 보내기 시작한 시점에서 패킷을 받기 시작한 시점까지 걸리는 전송 지연 시간
- 전송률: 단위시간(초) 당 전송되는 데이터의 양
- 전송받고자 하는 정보의 크기, HTTP 헤더 크기, TCP 연결/종결 시간
2-6. 네트워크 구조상 성능향상
- ISP: Internet Service Provider, 인터넷 서비스 제공자
- 웹캐시: ISP에서 비용절감을 위해 이전에 가져온 적이 있는 문서를 DB에 임시 저장해 두었다가 동일 문서가 다시 요청될 때 재사용
- 가상적으로 웹캐시는 클라이언트에게 서버 역할을 하고, 웹캐시 DB에 문서가 없다면 웹캐시가 클라이언트 역할을 해서 서버에게 문서를 요청한다 → 웹캐시는 중개상인의 개념
3. DNS(Domain Name System)
- 응용계층(인터넷 5 계층)에서만 관여한다.
- DNS: Domain Name → IP 주소 변환
3-1. Domain Name Server 계층
- Local DNS(캐시 있음) - Authroized DNS(캐시 있음) - TLDNS(캐시 없음) - Root Name Server(캐시 없음)
- Local DNS: Root NS에 의해 공인되지 않은 서버
- 모든 캐시에는 타임아웃이 있다.
- Local DNS의 캐시에 타임아웃이 발생하면 → Recursive/Iterative Domain Name Resolution
- Recursive: Local DNS가 Root NS에게 물어보고, Root NS가 TLDNS를 거쳐 Authorized DNS에게 물어본 후 주소를 Local DNS에게 전해주는 프로토콜은 존재하지만 동작하지 않음, 루트서버는 Top Level DNS주소만 알려줌
- Iterative: Local DNS가 Root NS와 TLDNS, Authorized DNS에게 차례로 물어보는 방법
한국항공대학교 김철기 교수님의 [컴퓨터 네트워크] 강의 정리입니다. 감사합니다.
728x90
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 9차시 - 전송계층(2) (1) | 2023.04.18 |
---|---|
[네트워크] 8차시 - 전송계층(1) (0) | 2023.04.18 |
[네트워크] 7차시 - 응용계층(4) (0) | 2023.03.15 |
[네트워크] 6차시 - 응용계층(3)-3 (0) | 2023.03.09 |
[네트워크] 6차시 - 응용계층(3)-2 (0) | 2023.03.09 |