프로그래밍/CS

[네트워크] 클라이언트-서버, 프로세스, 소켓, 전송계층, HTTP

choar 2022. 8. 24. 19:08
반응형

[네트워크] 클라이언트-서버, 프로세스, 소켓, 전송계층, HTTP

 

Client-Server Architecture

  • 서버(Server)
    • 항상 on 상태이다.
    • 고정 IP를 가진다.
    • ex) 데이터센터
  • 클라이언트(Client)
    • 서버와 통신한다.
    • 동적 IP를 가질 수 있다.
    • 클라이언트끼리는 직접 통신할 수 없다.

 

Processes communicating

  • 프로세스(Process) : 호스트 내에서 실행되고 있는 프로그램
    • 같은 호스트라면 OS를 통해 inter-process communication으로 통신한다.
    • 다른 호스트라면 메시지를 교환함으로써 통신한다.
  • Client process : 커뮤니케이션을 시작하는 프로세스
  • Server process : 연결되기를 기다리는 프로세스

 

Socket

  • 프로세스는 소켓을 통해 서로 메시지를 주고 받는다.
  • 소켓을 인덱싱 하는 것 = IP 주소 + 포트 번호

소켓

Transport layer가 제공해야 하는 것

  • data integrity :
    • 몇몇 앱은 100%의 reliability 필요 (ex. 파일 전송)
    • 몇몇 앱은 조금 loss가 생겨도 괜찮음 (ex. 오디오)
  • timing : delay가 너무 심하면 안됨 (ex. 음성 전화)
  • throughput
  • security

하지만 현재 transport layer 기술로는 data integrity만 제공한다. (TCP)

따라서 보안 등은 응용 계층에서 처리해줘야 한다.

 

HTTP (Hypertext Transfer Protocol)

  • 동작 종류 : request, response 2가지
  • TCP를 사용한다. 즉, HTTP 메시지 교환 전 TCP connection이 필요하다.
  • 특징
    • stateless : 기억 안함. 요청 들어오면 응답 보내고, 상대방 상태를 기억하지 않는다.
  • TCP connection에 따라 달라짐
    • non-persistent HTTP : connection 끊음
    • persistent HTTP : connection 유지 (현재 디폴트, keep-alive 헤더)

 

🌟 내용에 오류가 있다면 댓글 달아주시면 감사하겠습니다.


References

http://www.kocw.net/home/cview.do?cid=6166c077e545b736 

반응형