HTTP 웹 기본 개념

gga·2021년 9월 3일
0

web

목록 보기
5/6

인터넷이란?

TCP/IP 기반 프로토콜을 사용하여 정보를 주고 받는 컴퓨터 네트워크이다.

TCP/IP


IP(Internet Protocol)

패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 프로토콜이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.

한계

  • 비연결성
    - 데이터 전송 이전에 미리 설정과정을 거치지 않는다.
  • 비신뢰성
    - 데이터가 정확하게 갔는지 보장하지 않는다

해결방안

패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.

TCP(Transmission Control Protocol)

전송(Transport) 계층에서 사용하는 프로토콜이다.

특징

1. 연결 설정

3-way handshake


연결을 해제할 경우 4-way handshake 사용한다.

2. 신뢰성 보장

  • Sequence Number
    분할된 데이터에 순서 번호(Sequence Number)를 부여하여 전송 과정에서 순서가 뒤바뀌더라도 수신측에서 원래 데이터로 재조립할 수 있다.

    TCP에서 데이터를 분할하는 단위를 MSS(Maximum Segment Size)라고 하며, 데이터를 MSS 단위로 분할한다.

3. 흐름 제어 : 수신자 버퍼 오버플로우 방지

송신측 전송량 > 수신측 수신량일 경우, 전송된 패킷이 손실될 수 있기 때문에 송신측의 패킷 전송량을 제어한다.

  • Stop and Wait : 매번 전송한 패킷에 대한 확인 응답을 받아야 그 다음 패킷을 전송할 수 있다.

  • Sliding Window

4. 혼잡 제어 : 네트워크 내 패킷 수가 과도하게 증가하는 현상 방지

네트워크가 혼잡할 경우, 제대로 데이터를 보낼 수 없다.

  • Slow Start : 송신자는 연결 초기에 데이터 전송량을 낮게 잡아 보내면서 수신자의 수신을 확인하며 데이터 전송량을 조금씩 늘린다.

5. 오류 제어

훼손된 패킷과 중복 수신된 패킷을 폐기하고, 손실되거나 제거된 패킷을 재전송한다.

UDP(User Datagram Protocol)

HTTP/2.0까지 전송 계층은 TCP 기반이였으나, HTTP/3.0부터는 UDP기반으로 변경 되었다.

왜 UDP를 사용할까?

  • UDP = IP + PORT + checksum + 애플리케이션에서 추가 작업 필요
  • 데이터 전달 및 순서가 보장되지 않지만, 데이터 처리가 TCP보다 빠르다.
  • 주로 실시간 방송과 온라인 게임에서 사용된다.

Port(포트)

정의

네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.

종류

포트 번호는 크게 3종류로 구분된다. IP 주소 뒤에 :Port번호를 붙여 표기한다.
ex) 127.0.0.1:8080

0~1023번 : 잘 알려진 포트(well-known port)

FTP : 20, 21
SSH : 22
텔넷 : 23
DNS : 53
HTTP : 80
HTTPS : 443

1024~49151번 : 등록된 포트(registered port)

Alternate HTTP : 8008, 8080

49152~65535번 : 동적 포트(dynamic port)

사용자가 임의로 사용가능한 포트 번호

DNS(Domain Name System)

정의

네트워크 상에서 컴퓨터들은 IP 주소를 이용하여 서로를 구분하고 통신한다. 하지만 숫자로 된 IP 주소를 외울 수 없기 때문에 기억하기 쉬운 도메인 주소 체계가 생성되었다.

DNS 서버

인터넷 도메인 주소를 컴퓨터가 인식할 수 있는 IP 주소로 변환하는 역할을 한다.

HTTP의 역사

  • HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더X
  • HTTP/1.0 1996년 : 메서드, 헤더 추가
  • HTTP/1.1 1997년 : 가장 많이 사용
    - RFC2068(1997) -> RFC2616(1999) -> RFC7230~7235(2014)
  • HTTP/2 2015년 : 성능 개선
  • HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능 개선
    개발자 모드에서 Protocol 탭을 보면 총 3종류로 나눠진걸 볼 수 있다.

    h2 = HTTP/2, h3 = HTTP/3 이다.

HTTP 메세지 구조



HTTP Status Code

  • 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다.
  • HTTP 상태코드는 3자리 숫자로 이루어져 있으며 첫 번째 숫자를 기준으로 5가지로 나눌 수 있다.

1xx : Infomational

요청이 수신되어 프로세스 처리 중. 잘 사용하지 않는다.

2xx : Success

요청이 성공적으로 처리

200 OK

요청이 정상적으로 처리 되었다. 응답에는 적합한 페이로드가 포함되어야 한다.

201 Created

요청이 성공했으며 새로운 리소스가 생성됨
응답 헤더 Location 필드에 생성된 URI 표기

202 Accepted

요청이 접수되었으나 처리가 완료되지 않았음

  • 배치 처리 같은 곳에 사용

204 No Content

요청이 성공했으나, 응답 페이로드 본문에 보낼 데이터가 없다.

  • ex) 웹 문서 편집기에서 save 버튼

3xx : Redirection

요청을 완료하려면 추가 행동이 필요하다.

웹 브라우저는 응답 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다.

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

301 Moved Permanently

요청한 리소스가 새로운 URL로 영구 이전되었다.
리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.

308 Permanent Redirect

301과 기능이 같으나, 리다이렉트시 요청 메서드와 본문이 유지된다.

302 Found, 303 See Other, 307 Temporary Redirect

리소스의 URI가 일시적으로 변경되었다.

304 Not Modified

캐시를 목적으로 사용한다.

PRG(Post Redirect Get) Pattern

PRG는 웹 개발에 사용되는 디자인 패턴이다.

예를 들어, 사용자가 form에 정보를 작성 후 전송했다면, 아래 사진과 같이 새로고침을 누를 경우, 방금 전에 전송했던 POST 요청이 다시 서버에 전송된다.

이와 같은 문제를 방지하기 위해 리다이렉션을 사용해야 한다.

4xx : Client Error

클라이언트 오류, 요청에 잘못된 구문이 포함되어 있거나 요청을 수행할 수 없음

400 Bad request

클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음

401 Unauthorized

클라이언트가 해당 리소스에 대한 인증이 필요하다.
클라이언트가 권한이 없어 작업을 진행할 수 없다.

403 Forbidden

서버가 요청을 이해했지만 승인을 거부함

  • 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우

404 Not Found

요청한 URL에 해당하는 리소스를 찾을 수 없다.

5xx : Server Error

서버 오류, 서버가 정상 요청을 처리하지 못함

500

서버 문제로 오류 발생

503 : Service Unavailable

서버가 요청을 처리할 수 없다.
서버가 일시적인 과부하 또는 예정된 작업으로 요청을 처리할 수 없다.

HTTP Header

  • HTTP 전송에 필요한 모든 부가정보
  • header-field = field-name ":" OWS field-value OWS
    (OWS:띄어쓰기 허용)

협상(Content Negotiation)

  • 동일한 URI에서 리소스의 서로 다른 버전을 지원하기 위해 사용되는 매커니즘이다.

  • Accept : 클라이언트가 선호하는 미디어 타입 전달

  • Accept-Encoding : 클라이언트가 선호하는 압축 인코딩

  • Acceopt-Language : 클라이언트가 선호하는 자연 언어

ex) Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5
구체적인 것을 기준으로 미디어 타입을 맞춘다.

Media TypeQuality Value
text/html;level=11
text/html0.7
text/plain0.3
image/jpeg0.5
text/html;level=20.4
text/html;level=30.7

참고

김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

위키백과
https://ko.wikipedia.org

IP 작동 원리
https://dvnest.com/user_20210624

TCP
https://better-together.tistory.com/140?category=887984

0개의 댓글