Computer Science/Computer Network

[CS][컴퓨터 네트워킹 하향식 접근] Chapter2.1 Principles of network application

y-seo 2023. 11. 1. 11:35

 

 
 

Chapter02. Application Layer

 

 
 

Creating a network app

  • 프로그램은 end system에서 작동
  • network core device를 위한 sw 필요 X
  • network core device는 application 실행 X
  • end system의 application이 app의 신속한 개발과 전파를 가능하게 함

 

 
 

Client-Server paradigm

  • server
    • 항상 켜져 있는 host
    • IP 주소 고정
    • 많은 수의 호스트를 갖춘 data center가 강력한 가상의 서버를 생성하는 역할로 사용
  • clients
    • server와 contact하고 communicate
    • 간헐적으로 연결됨
    • 동적인 ip 주소
    • client끼리 직접적으로 연결 X
    • Ex. HTTP, IMAP, FTP

 

 
 

Peer-peer architecture

  • host가 client와 server의 역할을 변동 가능
  • server가 항상 켜져 있지 않음
  • 임의의 end system이 직접 통신
  • P2P에 속한 peer는 서로 서비스를 요청하고 전송
    • self scalability : 각 peer들이 파일을 다은 peer에게 분배함으로써 그 시스템에 서비스 능력을 추가, 새로운 peer은 새로운 service capacity뿐만 아니라 새로운 service 요구사항을 제공, 서비스를 받기도 하고 주기도 함
  • 간헐적으로 연결
  • IP 주소가 변동됨
  • Ex. P2P 파일 공유

 

 
 

Process communicating

  • process
    • host 안에서 program 수행 중
    • 같은 host 내의 두 process가 inter-process 통신을 사용하여 통신
    • 서로 다른 host에 있는 process가 msg를 주고 받음
  • clients & servers
    • client process : 통신을 시작하는 프로세스
    • server process : 연결되기를 기다리는 프로세스
  • P2P architecture를 사용하는 application에는 client process와 server process 존재

 

 
 

Sockets

  • socket을 이용해 msg를 주고 받음
  • sending process가 msg를 외부로 밀어낸다
  • msg를 보내기 위해 sending process의 출입구 뒷편에 transport 인프라 존재 → msg가 목적지 host에 도착하면 메세지는 receiving process의 출입구를 거치고 receiving process는 msg 처리
  • 각 면에 하나씩 있어 2개의 socket 존재

 
 

Addressing process

  • 프로세스 identifier 필요→ msg를 받기 위해
  • host device는 unique한 32bit IP address 소유
  • 호스트의 IP 주소로는 부족 → 많은 프로세스가 같은 host에서 실행될 수 있음
  • identifier = IP address + port number
  • well-knowned port
    • http server : 8.0
    • mail server : 2.5

 

 
 

An application-layer protocol defines

  • 다른 end system에서 실행되는 app의 v프로세스가 서로 msg를 보내는 방법 정의
  • 교환하는 msg의 타입
    • Ex. reponse, reques
  • msg syntax
    • field 설명
  • msg semantice
    • field의 정보 뜻
  • rules
    • 언제 어떻게 process가 msg가 send/respond 되는지
  • open protocol
    • RFC 정의
    • 문서로 정리
    • 모두가 protocol 사전에 접근 가능
    • 상호 호환성 허용
    • Ex. HTTP, SMTP
  • proprietary protocol
    • Ex. Skype

 

 
 

What transport service does and app need?

  • application이 이용 가능한 transport service
  • data integrity
    • 몇몇 app들은 100% reliable한 데이터 전송을 요구 (error/loss X) → 파일 전송, 웹 거래
    • audio는 조금의 loss는 용인
  • timing
    • 몇몇 app들은 효과적이기 위해 delay가 짧은 것을 요구 → 인터넷 전화, 대화형 게임
  • throughput
    • bandwidth 확보 필요
    • 몇몇 app들은 효과적이기 위해 최소한의 throughput 요구 → multimedia
    • elastic app들은 thorughput을 얻는대로 활용
  • security
    • 암호화, 데이터 무결성 등

 

 
 

Internet transport protocols service

  • 인터넷 전송 프로토콜이 제공하는 서비스
  • TCP service
    • sending/receiving process 사이의 reliable transport
    • flow control : 상대와 패킷 전송 속도 조절
    • congestion control : network 전체가 감당할 수 있는 것보다 많이 들어오면 packet 수 조절
    • connection-oriented : 연결 지향, client/server process간 전송 제어 정보 교환 (setup), ≠ connection service, source&destination만 아니까 process의 setup이 요구됨
    • does not provide : timing, minimum throughput guarantee, security
  • UDP service
    • TCP에 비해 간단
    • unreliable data transfer : 그대로 app에 넘김, 작업 X
    • does no provide : reliability, flow control, congestion control, timing, throughput guarantee, security, connection setup

 

 
 

Securing TCP

  • Vanilla TCP & UDP socket
    • 암호화 X, 다 평문 ASCII로
  • Transport Layer Security (TLS)
    • 기밀성을 위해 암호화된 TCP 연결 제공
    • TCP의 진화버전
    • data integrity : 데이터 변경 X
    • end-point authentication : 인증
    • accessability : 안전하게 정상 자격을 가진 사람이 접속할 수 있게
    • non-repudiation : 부인 방지
  • application layer에서 구현된 TLS
    • app은 TCP를 차례로 사용하는 TSL 라이브러리 사용
    • TLS 자신의 소켓 API를 가짐
    • 소켓에 전송된 cleartext가 인터넷에서 암호화됨