[네트워크] 2주차 Application Layer

nerry·2022년 5월 2일
0

네트워크

목록 보기
2/6

Application Layer

OSI 7 layers

Layer : 개념을 나눠 둔 것. 이 안에 여러 protocol이 있다.

이름프로토콜
ApplicationProcess
TransportationTCP/UDP
NetworkIP
LinkWifi, LTE, Ethernet
Physical

하위 층은 상위 층에 서비스를 제공하게 된다.

ex) T → A : Inegrity, 속도

Client - server Architecture

Application layer은 프로세스간의 통신을 주관한다.

프로세스 간 메시지를 주고 받는 용도인 Socket으로 연결 → IP address와 Port number이 이용된다.

  • Server
    • always-on
    • permanent IP address 고정된 IP 주소를 갖는다
    • data center
  • Clients
    • communicate with server
    • dynamic IP address IP 주소가 고정돼있지 않는다.

Transport service that app needs

  1. Data Integrity → 얘만 제공해주고 나머지는 App이 하게 된다.

    데이터의 신뢰성을 보장함

    • TCP가 제공해줌
  2. Throughput

    1초에 n양이 도달해야하는 정도

  3. Timing

    packet이 적어도 어느 시간에 도달하도록

    영상 송출 같은데서 중요한 문제

Internet apps

appapplication layer protocolunderlying transport protocol
e-mailSMTPtcp
remote terminal accesstelnettcp
webHTTPtcp
file transferFTPtcp
streamingHTTP, RTPtcp or udp
internet telephonySIP, RTPtcp or udp

HTTP

hypertext transfer protocol

  • 역할
    • request : hypertext 파일 요청
    • response : 해당 파일 전달

→ 이전에 Transport 층에서 TCP가 필요

  • TCP를 통해서 서버에 연결된다.
  • Stateless
    • 서버는 이전 요청에 대한 상태를 기억하지않음
    • 아무것도 기억하지 않아 상태 자체가 없음
  • Connections
    • non-persistent: 한 연결에 한 정보만, 이후로 연결 종료
      • 10개의 정보라면 10번의 연결이 필요하다.
    • persisitent : 한 연결에 모든 정보가, 정보가 하나 지나가도 연결이 지속된다.
      • 10개의 정보여도 1번의 연결만 필요하다.

Socket

프로세스 간의 통신 방식

  • app과 network 사이의 인터페이스
  • OS 간의 인터페이스
  • transport 방법에 따라 종류가 두가지다.
    • TCP = SOCK_STREAM
    • UDP = SOCK_DGRAM

TCP

연결시 : Three-way handshaking

socket → bind → listen → accept 과정으로 client와 연결됨

→ 이후 client로 부터 connect 요청이 올 때까지 block 된다.

→ read, write을 반복하고 client가 close 요청을 하면 server도 close한다.

  • bind : 생성한 socket의 id로 특정 포트에 연결
  • listen : connection 기다리기위한 passive state
  • accept : 새로운 connection을 허락하겠다.
  • close : data 교환이 다 끝난 후 sokcet을 release하여 다른 프로세스가 사용할 수 있도록 함

Transport Layer

Multiplexing / Demultiplexing

Multiplexing : 여러 프로세스에서 생성된 socket을 transport layer에서 segment로 묶어서 이동시킴

Demultiplexing : segment를 받아서 application으로 올려줄 때 분리해서 Socket으로 올려줌. 이때 어떤 Socket일지를 정하게 된다.

Demultiplexing 방법

헤더에 맨 앞에 number들로 한다.

UDP : source port #, destination port # 두 가지

→ length, checksum 까지 네가지로 에러 체크까지 해준다.

TCP : destination IP & port #, Source IP & port # 네 가지

→ 각 client마다 소켓을 관리한다.

profile
터벅터벅 개발(은좋은)자 로그

0개의 댓글