728x90
본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.
Ch02 Application Layer
1. Principles of Network Applications
네트워크 어플리케이션이 원리
네트워크 어플리케이션의 종류
- 소셜 네트워킹
- 웹
- 문자 메세지
- 이메일
- 멀티유저 게임
- 영상 스트리밍
- P2P 파일 공유
- 보이스오버 전화
- 실시간 영상 회의
- 인터넷 검색
- 등등등….
네트워크 앱을 만든다면
- 네트워크 앱을 만들기 위해서는…
- 여러 종단 시스템에서 돌아가야함
- 네트워크를 통해 통신
- EX) 브라우저와 통신하는 웹서버 프로그램
- 네트워크 코어 디바이스를 위한 코드가 필요없다
- 네트워크 코어 디바이스는 유저 어플리케이션에서 다룰 수 없다
- 개발하고 싶어도 못함
클라이언트-서버 패러다임
- 서버
- 항상 연결되있는 호스트
- 영구적인 IP 주소
- 데이터 센터에 둠
- 클라이언트
- 서버와 연결, 통신
- 간헐적인 통신을 할 수 있다
- 동적인 IP 주소를 가질 수 있다
- 클라이언트끼리는 직접적으로 통신하지 않는다
- 서버를 거쳐서 통신하게 됨
- EX) HTTP, IMAP, FTP
P2P(Peer-to-Peer) 아키텍쳐
- 항상 켜진 서버가 없음
- 종단 시스템끼리 직접 통신
- self scalabillity: 자가확장이 가능
- 서버-클라이언트와 다르게 항상 켜져있지않다
- IP가 바뀐다
- EX) 토렌트
- Zoom 은 P2P 서비스가 아니다
프로세스간의 통신
- 프로세스란?
- 호스트에서 돌아가는 프로그램
- 같은 호스트에서의 프로세스끼리는 OS에서 IPC 통신을 한다
- 다른 호스트에서의 프로세스들은 message를 교환함으로써 통신한다
- 클라이언트 프로세스
- 통신을 시작하는 프로세스
- 서버 프로세스
- 접속을 기다리는 프로세스
- P2P 구조의 어플리케이션들도 하나의 peer는 클라이언트, 하나는 서버라고 볼 수 있다.
소켓 Socket 통신
- 프로세스는 소켓으로부터 메세지를 받고, 소켓으로 메세지를 보낸다
- 비유 : 소켓은 문이다
- 송신 프로세스는 메세지를 문 밖으로 밀어낸다
- 송신 프로세스는 문 반대편의 transport infrastructure는 수신 프로세스 문 반대편으로 메세지 전달
- 이 과정에서 두개의 소켓이 활용된다
- 소켓은 어플리케이션과 네트워크 사이의 API라고도 볼 수 있다
주소 처리하기
- 메세지를 받기위해 프로세스는 식별자를 가져야한다!
- 호스트가 유일의 32비트 IP 주소
- 아직 호스트의 IP 주소로 식별하기 불충분
- 식별자는 IP 주소와 포트 번호를 가진다
- EX) HTTP server : 80
- EX) port number : 25
- 시나리오 ) HTTP 메세지를 웹서버로 보낼려면?
- 128.119.245.12:80 으로 메세지를 전송
왜 전송층의 서비스가 필요할까
- 대표적인 전송 프로토콜 : TCP, UDP
- app의 목적에따라 다른 프로토콜을 사용
- 신뢰성있는 데이터 전송
- 몇몇 앱은 100% 신뢰성있는 데이터를 요구 (파일 전송, 웹 트랜섹션)
- 손실된 패킷등을 다시 받는 등의 동작을 함
- 몇몇 앱은 손실이 있어도 괜찮다 (오디오, 영상)
- 몇몇 앱은 100% 신뢰성있는 데이터를 요구 (파일 전송, 웹 트랜섹션)
- 시간 내 도달 보장
- 몇몇 앱은 낮은 지연시간을 요구 (인터넷 전화, 게임)
- 대역폭
- 몇몇 앱은 최소한의 대역폭을 요구 (멀티미디어)
- 보안
인터넷 프로토콜 서비스 (TCP, UDP)
- TCP Transmission Control Protocol
- 신뢰성 있는 전송을 보장
- 플로우 제어 : 수신자의 속도에 따라 제어
- 혼잡 제어 : 네트워크가 혼잡도에 따라 제어
- connection-oriented : 먼저 연결을 하고 전송을 함 (세션을 수립)
- 타이밍 보장, 최소 대역폭 보장, 보안은 제공하지 않는다
- UDP User Datagram Protocol
- 신뢰성 없는 전송
- 신뢰성, 플로우제어, 혼잡제어, 타이밍, 대역폭보장, 보안, 연결설정을 제공하지 않는다
💡 그렇다면 왜 UDP를 쓰는가?
➡️ 기능이 적어 가볍고 빠르다!
TCP 프로토콜 보안
- 순수 TCP와 UDP는 보안화 하지 않는다
- ID 비밀번호등이 순수 텍스트로 전송된다
- TLS와 같은 보안 층을 사용하기도 한다
어플리케이션층 프로토콜이 정의하는 것들
- 어떤 타입의 메세지들이 교환될것인가를 정의
- 메세지의 문법을 정의
- 메세지의 의미를 정의
- 프로세스가 메세지를 어떻게 보내고 받을 것인지에 대한 규칙을 정의
- 공개된 프로토콜은?
- RFC에 정의 되어 누구가 정의를 볼 수 있다
- 상호운용이 가능해야한다
- EX) HTTP, SMTP
- 공개되지 않은 (proprietary) 프로토콜은?
- 스카이프, 또는 당신이 개발한 그저그런 프로그램…🥵
728x90