지금까지 Application Layer에 대해 알아봤다. http와 rest api의 심화 내용은 다른 과목에서 더 깊게 공부하기로 하자. 이번 강의의 목적은 네트워크 전반의 이해를 통해 웹 응용 기술들을 시스템적 관점에서 바라볼 수 있게함에 있다.
Transport Layer, 전송계층
- 지금까지 공부했던 Application Layer는 전송을 담당하는 계층이 아니다. Http는 사용자가 만들어낸 데이터를 메세지로 만드는 '규칙'이었고 DNS는 도메인-IP간 매핑을 해주는 '서비스'였다.
- 애플리케이션 계층의 웹브라우저든 이메일 클라이언트든 모두 "프로세스"이다. TCP는 프로세스 간 "Logical Communication"을 담당한다.
- Logical Communication, 논리적 통신이란 실제 전송이 아니라 메세지를 주고받는 과정에서 오류체크, 흐름제어 등을 한다는 것이다.
- 전송계층의 두 프로토콜
- TCP : Transmission Control Protocol
- UDP : User Datagram Protocol
- 멀티플렉싱, 디멀티플렉싱
- 멀티플렉싱이란? ( Multiplexing, 줄여서 mux라고도 한다.)
- 하나의 통신 채널로 여러개의 데이터를 동시에 보내는 것이다.
- 여러 애플리케이션들이 전송계층으로 메세지를 전달하면
- 전송계층에서는 헤더를 붙여서 캡슐화하고 네트워크 계층으로 일렬로 내려보낸다.
- 디멀티플렉싱이란? ( Demultiplexing, 줄여서 demux라고도 한다.)
- 수신 측 전송 계층에서 네트워크 계층에서 일렬로 올라온 데이터들을
- 헤더정보를 보고 알맞은 각 애플리케이션 소켓으로 전달하는 것이다.
- Connection Oriented demux
- TCP의 경우 연결을 맺는데 사용되는 Door Socket이 있고 커넥션 별로 소켓이 따로 있다.
- 따라서 한 프로세스가 커넥션 마다 소켓 하나씩을 가지므로 여러개의 소켓을 가질 수 있다.
- 따라서 demux를 위해선 목적지 프로세스와, 출발지 프로세스에 대한 정보가 필요하다.
- 목적지 프로세스 구분을 위해 : 목적지 IP, 포트번호
- 출발지 프로세스 구분을 위해 : 출발지 IP, 포트번호
- 따라서 TCP는 총 네개의 정보가 필요하다.
- 멀티플렉싱이란? ( Multiplexing, 줄여서 mux라고도 한다.)
UDP : User Datagram Protocol
- UDP 프로토콜의 특징
- 연결을 맺지 않는, Connection Less Protocol이다.
- 신뢰성이 낮고 (Unreliable), 순서를 맞춰서 전송해주지 않는다 (Unordered)
- 체크섬 기능으로 오류가 발생했는지 안했는지만 알려준다.
- 거의 기능이 없는 가장 기본적인 프로토콜이다.
- 왜 사용할까?
- Best Effort : Congestion Control 없이 일단 보낸다.
- Pure (No frils)하다.
- 그러므로 전송 오버헤드가 없다.
- 어디에 사용할까?
- 스트리밍 : Data Integrity보단 처리량이 중요하므로 Best Effort로 전송하는 UDP를 사용한다. 이론적으론 그렇지만 실제로는 TCP를 많이 사용한다.
- DNS : 일회성 질의이므로 굳이 커넥션을 맺을 필요가 없다.
- SNMP : SNMP는 망 관리 프로토콜이다. 정기적으로 최신정보를 업데이트하므로 Data Integrity가 중요하지 않다.
- 신뢰성이 매우 중요한 경우 : 신뢰성이 매우 중요한 경우에는 Integrity를 애플리케이션 계층에서 확인하므로 TCP가 필요없다.
- Http 3.0은 TCP 오버헤드를 줄이기 위해 UDP를 사용한다.
신뢰성있는 데이터 전송의 원리
- 신뢰성있는(Reilable) 데이터 전송을 위해선 다음과 같은 기능이 필요하다.
- Checksum : 체크섬 비트를 둬서 데이터에 오류가 있는지 검사하는 방법
- Ack : Acknowledge, 잘 받았다는 확인 응답
- N-Ack : Negative Acknowledge, 잘못 받았다는 확인 응답, 웹에서는 사용하지 않는다.
- Timer : Ack를 무한정 기다릴 수 없으므로 타이머를 둔다.
- Window Pipelining : 데이터 전송과 수신을 비동기식으로 처리하기 위한 Window다. 쉽게 얘기하자면 데이터를 주고-받고-주고-받고가 아니라 주고 주고 주고 받고 주고 받고 받고 식으로 통신한다는 것이다.
- Sequence Number : 순서에 맞는 데이터 전송을 위한 순서 정보다. 포트를 재사용할 수 있으므로 통신 시작 시 랜덤한 Sequence 동기화하는 과정을 거친다. (SYN 플래그를 사용한다.)
더보기
본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.
내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.
틀린 부분이나 오타 지적은 댓글로 남겨주세요.
'컴퓨터 네트워크' 카테고리의 다른 글
네트워크 11강 - TCP part.2 (0) | 2020.08.10 |
---|---|
네트워크 10강 - TCP part.1 (0) | 2020.08.10 |
네트워크 7강, 8강 - Electronic Mail과 DNS, P2P 아키텍쳐 (0) | 2020.08.07 |
네트워크 6강 - 쿠키와 웹캐시 (0) | 2020.08.07 |
네트워크 5강 - RTT, Http의 종류와 메세지 (0) | 2020.08.06 |