티스토리 뷰
Hyper Text Transfer Protocol의 약자로서
인터넷에서 데이터를 주고받을 때 따라 하는 규칙이다.
이렇게 사전에 규칙을을 정해 데이터를 주고받기 때문에
굉장히 많은 사람들이 각기 다름 프로그램을 개발하여도 같은 방식으로 데이터를 주고받을 수 있는 것이다.
이로써 클라이언트(사용자)와 서버가 데이터로 소통할 수 있는 규칙은 정해졌다
그렇다면 어떠한 방법을 소통을 할 것인가.
HTTP를 알아보기 전에 간단하게 인터넷 네트워크가 어떠한 방식으로 동작하는지 살펴보겠다.
IP(Internet Protocol)
가장 근간에는 클라이언트와 서버간의 IP (Internet Protocol)을 사용하여 소통하는 것이다
이는 단순하게 지정한 IP주소로 데이터를 패킷이라는 통신 단위로 나눠 전달하는 것인데
이 패킷안의 사용자가 데이터를 전달하려는 IP주소와 데이터 등을 넣어 서버에 보내는 것이다.
허나 이렇게 되면 문제점들이 여럿 있는데
(패킷의 순서 / 패킷의 소실 문제)
예를 들어
1 / 2 / 3
과 같은 패킷은 순서대로 받아야 하는데 순서가 뒤엉켜서 오거나, 2번 패킷이 소실되는 경우이다.
이를 보안하기 위하여 나온것이 TCP/UDP라고 한다.
TCP/UDP
TCP(Transmission Control Protocol)의 특징은 앞서 말했던 패킷의 순서나, 소실 문제를 보완할 수 있다는 것이다.
이는 TCP의 3way handshake를 통하여 동작하는데
1.SYN
접속 요청을 보낸다
2.SYN + ACK
서버 쪽에서 요청을 수락한다.
3.ACK
ACK와 함께 데이터 전송
(이는 가능한 것이지 이후에 전송할 수도 있음)
이렇게 3way handshake를 거치면서
패킷의 순서와 소실의 문제점들을 해결해 준다.
(순서 같은 경우는 재요청 / 소실 같은 경우는 받았다는 응답을 통해)
이와 반대되는 것이 바로
UDP(User Datagram Protocol) 이다.
3way handshake / 데이터 전달 보증 / 순서 보장
등은 없지만 대신 단순하고 빠르다는 장점이 있다.
자 이렇게 데이터를 받고 보낼 수 있게 되었다.
근데 만약 데이터를 동시에 받거나 보내야 한다면?
그래서 존재하는 것이 PORT 이다
PORT
말 그대로 항구라고 생각해도 무방하다.
만약 우리가 하나의 화물선만 정박할 수 있는 항구를 한 개뿐이 가지고 있지 않은데
인터넷이라는 화물과 게임이라는 화물을 각기 다른 화물선에서 받아야 한다면 어떻게 될까?
단순하다 항구의 개수를 늘리면 된다.
이렇게 한 IP에서 여러 데이터를 동시에 받게 할 수 있는데 PORT이다
마지막으로 알아볼 것은 DNS이다
DNS
DNS(Domain Name System)은 이미 우리가 잘 알고 있다.
위에서 인터넷 프로토콜의 근간은 IP라는 것을 살펴봤는데 단점이 있다.
외우기가 어렵다는 것이다.
우리가 사람들의 이름은 잘 기억해도
그 사람들의 전화번호는 잘 기억 못 하는 것이랑 비교하겠다.
그래서 이를 핸드폰의 전화부에 저장하듯
DNS 또한 IP주소 들을 저장하는 IP부(?) 라고 생각하면 될 듯싶다.
naver.com
google.com
youtube.com
이런 것들 모두 DNS라고 할 수 있겠다.
개인 학습을 위해 작성 되는 글 입니다.
제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.
'WEB > HTTP' 카테고리의 다른 글
[HTTP] 쿠키와 세션 그리고 캐시(1) (0) | 2021.08.01 |
---|---|
[HTTP] Header(헤더) (0) | 2021.08.01 |
[HTTP] API 그리고 REST API (0) | 2021.07.30 |
[HTTP] HTTP 메서드 (0) | 2021.07.28 |
[HTTP] HTTP의 특징 (0) | 2021.07.28 |
- Total
- Today
- Yesterday
- ExceptionHandlerExceptionResolver
- 제이쿼리 위치탐색선택자
- 제이쿼리란
- maenco
- jQuery 직접 선택자
- Spring TypeConverter
- 맨코
- 세션
- uri
- 쿠키
- cookie
- 캐시
- DTO와 VO의 차이
- http
- OOP
- 제이쿼리 직접 선택자
- Spring API Error
- 제이쿼리 인접 관계 선택자
- @ExceptionHandlere
- spring
- ResponseStatusExeceptionResolver
- @ResponseStatus
- 제이쿼리 기본 선택자
- 제이쿼리 탐색선택자
- Cache
- DefaultHandlerExceptionResolver
- application/x-www-form-urlencoded
- Spring MVC
- Spring Container
- Session
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |