Network 구조

 

Socket ⇒ TCP를 User mode Application에서 접근할 수 있도록 파일 형식으로 추상화한 인터페이스가 속해진 것.

  • Port Number ⇒ Transport 식별자
  • IP Address ⇒ Host 식별자
  • MAC Address ⇒ NIC 식별자
  • IP Address ⇒ Host 식별자
    • 하나의 컴퓨터는 여러개의 IP Address를 가질 수 있다.
    • IP는 NIC 하나에 여러개를 할당받을 수 있다. (바인딩)
  • Host
    • Network에 연결되어 있는 Computer
    1. Network 자체를 이루는 주체(Switch)
    2. Network를 이용하는 주체 (Host, End Point, Client, Peer, Server)
  • Switch
    • Router (L3 Switch)
      • 길(경로)를 찾기 위해 Switching 한다.
    • F/W (Firewall) 방화벽
    • IPS

 

IPv4

IP 주소는 Host에 대한 식별자이다.

  • IP Adderss
    • v4
      • 32 bit
      • 경우의 수 2^32
      • ex) 127.0.0.1
    • v6
      • 128 bit
      • 경우의 수 2^128
  • IP Address에서 NetworkId길이가 몇인지 나타내는 것이 SubnetMask이다.
    • 예제)
    • IP Address 192.168.219.100
    • subnetmask 255.255.255.0
    • 192 → 1100 0000
    • 255 → 1111 1111
    • ip address와 subnet mask를 bit and 연산을 한 결과를 구한다.
    • 192.168.219.0
    • 0 ⇒ Host ID
    • 192.168.219 ⇒ Network ID
    • 표기 ⇒ 192.168.219.100/24 ⇒ 24bit가 NetworkID, 8bit가 Host ID라는 의미

 

Port Number

Port Number

  • 16 bit
  • 2^16 -2 가지의 경우의 수
    • 0과 65535는 사용하지 않음.
  • 각 Process는 Network에 접속하려고 하면 Socket이 열리게 된다. Socket은 TCP 추상화한 인터페이스 정보를 포함하기 때문에 Port번호를 갖게 되는데, 이 Port번호는 각 Process마다 서로 중복되지 않게 할당되게 된다.
  • Network에서 어떠한 Packet을 받아온다고 가정하면 NIC → IP를거쳐 TCP에서 Port번호를 식별해 해당 Port번호가 할당된 Process에게 Data를 전달한다.

 

Switch

어떤 Packet이 목적지를 향해 이동하려고 한다. 이때의 과정을 쉽게 설명하면 다음과 같다.

  1. 중간 지점들은 모두 Router이다.
  2. 각각의 Router들은 Routing Table을 갖는다.
  3. Router에서는 Routing Table을 기준으로 Packet을 어떤 Router로 보낼지를 결정한다.

 

Network Data 단위

TCP ⇒ Segmentation

IP ⇒ Packet

NIC ⇒ Frame

예시)

  • Application에서 문서작업을 함
  • ⬇️  Stream 데이터 전송
  • TCP: Stream 데이터를 MSS 단위로 자름 ( MSS는 MTU에 의해서 결정된다. )
  • ⬇️  Segmentation 전송
  • IP: Segmentation을 포장함
  • ⬇️  Packet 전송
  • H/W: Packet을 실어 나름 ( Frame )

 

참고 영상

 

728x90

HTTP Response Status Code

HTTP Response Status Code는 특정 HTTP Request가 성공적으로 완료되었는지 여부를 나타낸다.

응답은 5가지의 클래스로 구분된다.

  1. 정보 응답(확인) 100 - 199
  2. 성공적인 응답(통신 성공) 200 - 299
  3. 리다이렉트 메시지(리다이렉트) 300 - 399
  4. 클라이언트 오류 응답(클라이언트 오류) 400 - 499
  5. 서버 오류 응답(서버 오류) 500 - 599

 

표준 응답 코드

10x :: 통신 성공

100 Continue

클라이언트가 요청을 계속해야 하거나 요청이 이미 완료된 경우

응답을 무시해야 함을 나타낸다.

 

101 Switching Protocols

클라이언트의 요청 헤더에 대한 응답으로 전송되며, 서버가 전환하는 프로토콜을 나타낸다.

 

102 Processing ( Web DAV 전용 )

서버가 요청을 수신하여 처리 중이지만 아직 응답이 없음을 나타낸다.

 

103 Early Hints

주로 헤더와 함께 사용되어 서버가 페이지에 리소스가 필요한 원본에 대한 응답 또는 사전 연결을 준비하는 동안 사용자 에이전트가 리소스 사전 로드를 시작할 수 있도록 하기 위함

:: 서버가 필요한 데이터를 가져오는 동안 클라이언트에게 필요한 css, js 파일을 넘겨주는 것

 

 

20x :: 통신 성공

200 OK

요청 "성공" 의미 (GET)

 

201 Create

요청 "성공" 새 리소스 생성

생성 성공(POST)

 

202 Accepted

요청 접수 "성공"

요청이 수신 되었지만 아직 실행되지는 않음.

 

204 No Contents

요청 "성공" 콘텐츠는 없음

처리 결과만 중요한 API의 경우 주로 사용

 

30x :: 리다이렉트

300 Multiple Choice

서버에서 여러 개의 응답이 있음을 알릴 때 사용

 

301 Move Permanenlty

요청 URI가 새 위치로 옮겨갔을 때 (영구적으로 컨텐츠가 이동했을 때 사용)

 

304 Not Modified

200 다음으로 많이 볼 수 있는 HTTP 상태 코드 이다.

요청된 리소스를 재전송할 필요 없음을 나타낸다.

304 인경우 보통 브라우저에 캐시되어 있는 버전을 사용한다.

 

40x ::  클라이언트 오류

400 Bad Request

서버에 API에 정의되어 있지 않은 요청이 들어온 경우, 즉 사용자가 잘못된 요청을 한 경우

 

401 Unauthorized

인증 오류

"인증되지 않은 클라이언트가 요청을 했을 경우", 사용자는 요청에 대한 응답을 얻기 위해서 인증한 후 다시 요청을 보내야 한다.

 

403 Forbidden

권한 밖의 접근 시도

클라이언트가 액세스 권한이 없는 콘텐츠에 대한 요청을 보냈을 경우

 

404 Not Found

요청 URI에 대한 리소스가 존재하지 않는 경우

클라이언트가 요청한 리소스를 서버가 찾을 수 없을 때

브라우저에서 404는 URL이 인식되지 않음을 의미한다.

 

405 Method Not Allowed

API에서 정의되지 않은 메소드 호출

ex) DELETE 메소드로 요청을 했는데, API가 DELETE 메소드를 허용하지 않은 경우 

 

406 Not Acceptable

처리 불가

요청한 콘텐츠의 차입을 서버가 응답할 수 없는 경우

 

408 Request Timeout

요청 대기 시간 초과

서버의 요청 대기가 시간을 초과한 경우

 

409 Conflict

서버가 요청을 수행하는 중에 충돌이 발생한 경우

 

429 Too Many Request

사용자가 일정 시간동안 너무 많은 요청을 보낸 경우

 

50x :: 서버 오류

500 Internal Server Error

서버 내부 오류

서버에서 처리 방법을 알 수 없는 상황이 발생했을 때 

서버 로직에서 Error가 발생한 경우

 

502 Bad Gateway

게이트웨이 오류

서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 잘못된 응답을 받았을 때

 

503 Service Unavailable

서비스 이용 불가

서버가 오버로드 되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없는 상태

대부분 일시적인 상태

 

504 Gateway Timeout

게이트웨이 시간 초과

서버가 게이트웨이나 프록시 역할을 하고 있거나 업스트림 서버에서 제대 요청을 받지 못함.

728x90

'CS > Web' 카테고리의 다른 글

[CS] HTTP Request Methods  (0) 2024.01.19
[CS] Cookie & Session  (0) 2024.01.18
[CS] 브라우저 동작 원리  (0) 2024.01.18

HTTP Request Methods

 

HTTP는 주어진 리소스에 대해 수행할 작업을 나타내는 요청 메서드 집합을 정의한다.

각 메소드들은 서로 다른 의미로 사용되지만 몇 가지 공통 기능은 그룹별로 공유된다.

 

  • GET
    • 리소스(데이터) 요청
    • 일반적으로 우리가 브라우저를 통해서 주소창에 URL을 입력하여 서버에 리소스를 요청하는 것
  • HEAD
    • 응답 본문 없이 메시지 헤더 정보를 응답으로 요청
    • GET과 유사하지만 실제 문서를 요청(Body)하는 것이 아닌 문서에 대한 정보(Header)를 요청
  • POST
    • 데이터를 서버에 전송
    • 클라이언트가 서버에 데이터(정보)를 제출하기 위해 사용된다.
  • PUT
    • 데이터 갱신(업데이트)하기 위해 사용
    • POST와 유사하지만 PUT은 이미 서버에 존재하는 기존 데이터 값을 갱신(업데이트)할 때 사용한다.
  • DELETE
    • 서버에 저장된 리소스(데이터)를 삭제하기 위해 사용
  • CONNECT
    • 클라이언트와 서버 사이의 중간 경유를 위해 사용
    • 보통 Proxy를 통해 SSL 통신을 하고자할 때 사용한다.
  • OPTIONS
    • 서버 측 제공 메소드에 대한 질의를 하기 위함
    • 서버에서 지원하고 있는 메소드가 무엇인지 알기 위해 사용한다
      • 서버가 어떤 method, headr, content-type을 지원하는지
  • TRACE
    • Request 리소스가 수신되는 경로를 보기 위함
    • 서버로부터 받은 내용을 확인하기 위해 loop-back 테스트를 할 때 사용
    • XST 공격을 예방하기 위해 보통 TRACE METHOD는 막아둔다.
      • TRACE Method 요청을 통해서 쿠키값이 탈취 될 수 있기 때문에
      • 참고
  • PATCH
    • 서버에 저장된 리소스(데이터)의 일부분만을 갱신(업데이트)하기 위한 메소드
    • PUT과 유사하지만 PUT은 모든 데이터 갱신 PATCH는 일부분만 수정할 때 사용된다.
728x90

'CS > Web' 카테고리의 다른 글

[CS] HTTP Response Status Code  (0) 2024.01.19
[CS] Cookie & Session  (0) 2024.01.18
[CS] 브라우저 동작 원리  (0) 2024.01.18

Cookie?

HTTP Cookie(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각을 의미한다.

서버가 브라우저에게 쿠키를 전달하면 브라우저는 쿠키를 저장해두었다가(브라우저 저장소에), 쿠키를 전달해준 동일한 서버에 클라이언트가 재 요청을 하게 되면 저장된 쿠키를 서버에 함께 전송한다.

Cookie는 서버가 요청이 동일한 브라우저에서 왔는지 확인할 때 주로 사용한다. 예시로 쿠키를 통해 사용자의 로그인 상태를 유지할 수 있다.

 

Cookie의 사용 목적

  • 세션 관리 (Session Management)
    • 서버에 저장해야 할 로그인, 게임 스코어 등의 정보 관리
  • 개인화 (Personalization)
    • 사용자 선호, 테마 등의 세팅
  • 트래킹 (Tracking)
    • 사용자 행동을 기록하고 분석하는 용도

 

Session?

Session은 쿠키를 기반으로 한다. 그러나 Cookie와 가장 큰 차이점은 사용자의 정보를 브라우저에 저장하는 쿠키와 달리 세션은 서버에서 관리한다.

사용자에 대한 정보를 서버에서 저장하여 관리하기 때문에 보안상 쿠키보다 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.

Client가 Server에 Request를 보내면, Server가 Client에게 Unique한 Id를 부여한다. 이것이 SessionId이다.

 

Cookie VS Session

  Cookie Session
저장위치 Client Server
저장형식 Text object
만료시점 쿠키 저장시 설정
(설정 없으면 브라우저 종료 시)
정확한 시점 모름
리소스 Client Server
용량제한 한 도메인 당 20개, 한 쿠키당 4KB 제한 없음

 

728x90

'CS > Web' 카테고리의 다른 글

[CS] HTTP Response Status Code  (0) 2024.01.19
[CS] HTTP Request Methods  (0) 2024.01.19
[CS] 브라우저 동작 원리  (0) 2024.01.18

+ Recent posts