컴퓨터 네트워크 - Chap 2 Applicaiton Layer

2023. 10. 23. 15:36데이터통신 , 네트워크

728x90

Application 아키텍처

(1) client-server

(2) peer-to-peer (P2P)

 

 

Clinet-Server

server

  • public 주소여야 함
  • 서버는 항상 활성화 상태여야 함.

client

  • 클라이언트끼리 직접 서로 통신하지 않고 서버를 통해 통신.

 

P2P

  • 서버를 통하지 않고 직접 통신
  • 서로가 서버역할도 했다가, 클라이언트 역할도 함

 

 

Processes communicating

* process: 하나의 호스트 내에서 실행 중인 프로그램 

* inter-process communication: 한 호스트 내에서 두 프로세스가 통신하는 경우 
-> OS에 의해 정의된다.

* 서로 다른 호스트 내에서 프로세스끼리 통신하는 경우

-> 대표적으로 socket

 

 

Addressing processes

  • host는 구별가능한 32bit IP주소를 가진다.
  • 프로세스들이 동일한 아이피를 사용할 때는 포트번호로 구별해야 한다.

 

 

app이 필요한 transport service

  • data integrity: 데이터 무결성
    -> 데이터 손실 최소화(no loss)
  • timing
    -> 정해진 시간 내에 전송되도록
  • throughput: 처리량
    -> 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율
  • security: 보안

 

 

Internet transport protocols services

TCP service

  • reliable transport
    -> 어떤 게 믿음직한가?
    1. no loss
    2. no delay
    3. inorder delivery (보낸 순서대로 받아지는)
  • flow control
    -> sender는 receiver가 한 번에 너무 많은 데이터를 받지 않게 조절해야 함
  • congestion control
    -> 인터넷의 전체 성능향상을 위해.
    네트워크가 혼잡해지면 통신하는 프로세스 속도를 낮춘다.
  • connection-oriented: 연결지향형
    1. TCP가 메시지 전송 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 함 
    -> 핸드셰이킹
    2. 메시지 전송 후 마치면 연결을 끊음

 

UDP service

  • unreliable transport, unordered delivery
    -> no loss, no delay, inorder delivery
    이 중에 하나라도 해당 안되면 unreliable 하다고 한다.
  • flow control, congestion control, connection-oriented가 없다.

 

그럼 UDP를 어디에 쓸까?

-> 데이터의 처리가 TCP보다 빠르다. 빠르게 연결해야 하는 곳에서 사용.
안정성이 TCP에 비해 떨어지므로 데이터가 분실되더라도 상관없는 곳에서 사용.

1. 스트리밍 (예: 유튜브)

2. 인터넷 전화 (예: 스카이프)

 

 

Socket Programming

(1) TCP 서버의 함수 호출 순서

1. socket() : 소켓 생성

2. bind() : 소켓 주소할당

3. listen(): 클라이언트 연결요청 대기상태

4. accept(): 클라이언트 연결허용

5. recv() : 수신

send(): 송신

6. close(): 연결종료, 소켓닫기 

(윈도우에서는 closesocket())

 

TCP 클라이언트의 함수 호출 순서

1. socket(): 소켓 생성

2. connect(): 연결요청

3. recv(), send()

4. close(): 연결종료, 소켓닫기

(2) UDP 서버의 함수 호출 순서

1. socket() : 소켓 생성

2. bind() : 소켓 주소할당

3. sendto() : 데이터 송신

recvfrom() : 데이터 수신

4. close(): 연결종료, 소켓닫기

 

UDP 클라이언트의 함수 호출 순서

1. socket(): 소켓 생성

2. sendto(), recvfrom()

3. close(): 연결 종료, 소켓닫기

 

* TCP와의 차이점

  • TCP와 달리 연결 설정의 과정이 필요 없다(no handshaking)
  • TCP는 목적지의 주소정보를 이미 알고 있어서 주소 정보를 추가하지 않아도 되지만,
    UDP는 연결상태를 유지하지 않으므로 데이터를 전송할 때마다 반드시 
    목적지의 주소정보를 추가해야 한다.
  • TCP는 1대1 통신만 가능
    UDP는 1대다 통신 가

 

 

HTTP

: hypertext transfer protocol

웹에서 사용하는 프로토콜

 

HTTP connections

1. non-persistent HTTP : 비지속 연결
-> 클라이언트-서버 상호작용 간에 각 요구/응답 쌍이

분리된 TCP 연결로 보내짐.
한쌍이 끝나면 연결이 끊어짐.

response time=2 RTT + file transmission

 

 

2. persistent HTTP : 지속 연결
-> 클라이언트-서버 상호작용 간에 각 요구/응답 쌍이

같은 TCP 연결상으로 보내짐

 

* RTT(Round Trip Time)

: 패킷이 왕복하는 데 걸리는 시간

 

 

 

* Cookies: 서버가 사용자 접속을 제한하거나 사용자에 따라 콘텐츠를 제공하기 위해 

사이트가 사용자를 추적하도록 해준다.

authorization: 로그인 저장

recommendations: 추천

 

* Web caches( proxy server)

:  웹서버를 대신하여 클라이언트 요청을 만족시키기 위한 것이 목적.

캐시에 저장되어 있다면 빠르게 요청을 만족시킬 수 있다.

-> 전체 웹 트래픽을 줄여서 성능개선, 
클라이언트 요청 response 시간을 줄일 수 있다.

 

 

 

 

 

728x90