Network

소켓 통신

  • TCP (Transmission Control Protocol)
    • 연결형 서비스 제공
    • 높은 신뢰성 보장
    • 3-way handshaking을 통한 연결의 설정
    • 4-way handshaking을 통한 연결의 해제
    • 데이터 흐름 제어, 혼잡 제어
    • 전자우편이나 파일전송에 사용
  • UDP (User Datagram Protocol)
    • 비연결형 서비스 제공
    • 신뢰성이 낮음
    • 데이터의 전송 속도가 바뀔 수 있음
    • 데이터 수신 여부 확인을 안함(3-way handshaking과 같은 과정이 없음)
    • TCP보다 전송 속도가 빠르다
    • 도메인이나 실시간 동영상 서비스에서 사용

OSI 7계층

  • 물리 계층
    • 물리 매체를 통한 0과 1의 비트 전송
  • 데이터 링크 계층
    • 이더넷과 같이 인접 시스템간의 신뢰성 있는 정보를 전달
  • 네트워크 계층
    • IP 등을 말한다. 패킷을 수신해야 할 상대의 주소를 지정하여 전달한다. 상대방이 잘 수령했는지는 보장하지 않는다.
  • 전송 계층
    • TCP와 UDP를 말한다.
    • TCP는 연결형 서비스이고 패킷의 순서를 보장하며 높은 신뢰성을 보장한다.
    • UDP는 비연결형 서비스이고 신뢰성이 낮으며 단순히 데이터만 빠르게 전달한다.
  • 세션 계층
    • 응용프로세스간의 연결을 관리한다.
  • 표현 계층
    • 데이터의 표현 방식을 정의한다.
  • 응용 계층
    • 다양한 네트워크 서비스를 제공한다.

HTTP와 프로토콜

  • HTTP(HyperText Transfer Protocol) 프로토콜은 웹 브라우저와 웹 서버 사이의 데이터 통신 규약이다. 웹 페이지의 링크를 클릭하면, 웹 브라우저는 HTTP 요청 방식에 따라 웹 서버에 데이터를 전송하고, 웹 서버는 웹 브라우저가 보낸 데이터를 분석하여 요청 받을 일을 처리하여 응답한다.
  • 프로토콜은 통신에서 통신 규약 및 약속을 의미한다. 서로 다른 시스템간의 정보 통신을 원활히 하기 위해 사용한다. 대표적으로 TCP/IP가 있다.
  • TCP/IP는 인터넷 표준 프로토콜로 컴퓨터의 데이터 통신을 하기 위해 만들어진 프로토콜 체계이다. IP는 패킷 통신 방식의 인터넷 프로토콜을 의미하고 TCP는 전송 조절 프로토콜을 말한다. 즉 네트워크 선로를 통해 패킷의 순서 뒤바뀜을 수정하고 손실을 교졍하며 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜을 의미한다.

연결 지향, HandShake

  • 연결 설정 : 3-way handshaking

    • 연결을 위해 클라이언트 측에서 Active Open을 하고 SYN 비트를, 연결요청 플래그를 체크해서 세그먼트를 서버측으로 보낸다.
    • 서버측에서는 연결을 맺기 위한 세그먼트구나를 확인하고 ACK를 준다. 서버측은 사전에 수신측에 연결을 제공하기 위해 Passive Open을 하고 기다린다.
    • 클라이언트측은 응답을 확인하고 송신측으로 ACK를 보낸다. 이렇게 세번의 데이터 교환으로 커넥션이 설정된다.
  • 연결 종료 : 4-way handshaking

    • 클라이언트측에서 연결을 닫으려 할 때 FIN으로 설정된 세그먼트를 보낸다.
    • 보내고 클라이언트측은 FIN_WAIT_1상태로 들어가고 서버의 응답을 기다린다
    • 서버는 클라이언트로 ACK라는 승인 세그먼트를 보내나다
    • 클라이언트가 세그먼트를 받으면 FIN_WAIT_2상태로 들어간다
    • 서버는 ACK를 보낸 후 일정 시간 이후에 FIN 세그먼트를 보낸다.
    • 클라이언트는 ACK를 받으면 TIME_WAIT상태가 되고 다시 서버로 ACK를 보낸다. 그려면 서버는 CLOSE상태가 된다
    • 클라이언트는 일정 시간 대기 후 연결이 공식적으로 닫힌다.

REST(REpresentational State Transfer)

잘 표현된 HTTP URI로 리소스를 정의하고, HTTP 메서드로 리소스에 대한 행위를 정의한다. 리소스는 JSON, XML과 같은 여러가지 언어로 표현할 수 있다.

이렇게 REST의 특징을 지키는 API를 RESTful하다고 한다.

  • 리소스 : 서비스를 제공하는 시스템의 자원을 의미

  • REST API의 URI

    1. URI는 명사를 사용
    2. 슬래시( / )로 계층관계를 나타낸다.
    3. URI의 마지막에는 슬래시를 사용하지 않는다.
    4. URI는 소문자로만 작성
    5. 가독성을 높히기 위해 하이픈( - )은 사용할 수 있지만, 언더바( _ )는 사용하지 않는다.
  • HTTP 메소드

    REST 서비스에서는 CRUD에 해당하는 네개의 메소드를 사용한다.

    • POST - CREATE
    • GET - READ
    • PUT - UPDATE
    • DELETE - DELETE

태그:

카테고리:

업데이트: