HTTP 기반 지식 정리

박경현·2023년 3월 8일
0

http에 대해 어느정도 알고 있고 정리도 몇 번 했지만 이건 정리를 해도해도 부족한 느낌이다..

그래서 인프런의 김영한님의 http 강의를 토대로 정리를 해보려고 한다!

HTTP기반 지식

클라이언트와 서버는 인터넷 세상에서 어떻게 통신할까?

IP

IP는 인터넷에 연결된 장치들을 서로 구분할 수 있는 일련의 고유 주소 이다!

클라이언트 : 100.100.100.1
서버 : 200.200.200.1

지정한 IP주소에 데이터를 전달, 패킷이라는 단위로 전달한다

IP프로토콜의 한계

과연 IP만 있다고해서 완벽하게 원하는데이터를 전달할 수 있을까?

비연결성 - 패킷을 받을 대상이 없어도 일단 전송하고 봄!
비신뢰성 - 중간에 패킷 사라지거나 순서가 잘못되면?
프로그램 구분 - 인터넷에 연결된 장치가 게임도 하고 카카오톡도 하고 있다면 두 프로그램 중 어디 전달?

그래서 이 ip뿐 아니라 TCP/UDP라는 프로토콜도 사용된다!

TCP/UDP

내가 생각하는 IP의 가장 큰 단점은 하나의 컴퓨터에서 어플리케이션이 수십개가 돌아갔을때
정확하게 원하는 프로그램에 전달할 수 없다를 해결해야한다고 생각한다!

원래는 OSI 7계층으로 세세하게 나누는데 여기서는 간략하게 핵심만 보여준다!

프로토콜 계층에서 전달 방식!

TCP 데이터 세그멘트를 IP패킷 데이터로 감싼 모습

TCP특징

전송제어 프로토콜이라고 생각하고 시작하면 편하다!

연결지향 - TCP 3 way handshake(가상연결)
데이터 전달보증
순서보장, 신뢰할 수 있는 프로토콜 현재는 대부분 TCP를 사용!

3 way handshake 순서

  1. 일단 클라에서 서버로 SYN이라는 접속 요청 메시지를 보냄

  2. 서버가 SYN+ ACK(요청 수락)라는 요청수락을 보냄

  3. 클라도 다시 ACK라는 요청을 보냄 -> 요새는 이때 데이터 보내기도 가능!

데이터 전달보증과 순서 보장 방식

클라이언트에서 데이터 전송했을때 서버에서 데이터 잘 받았다는 메시지를 보내준다!!

패킷1,2,3 순서가 아닌 패킷 1,3,2순으로 도착했다면
잘못 온 부분부터 뒤에 전부 삭제!
TCP안에 순서와 검증정보가 들어있어서 확인이 가능!

UDP = IP+ Port

기능이 별게 없고 그냥 데이터 전달해주는 녀석이다
IP와 비슷하지만 port가 추가되어있다!
순서 검증을 안하기 때문에 속도가 확실히 빠르다!

그렇다면 Port는 무엇일까?

PORT로 앞에 말한 IP의 고질적인 문제를 해결할 수있다!
내 컴퓨터에서 돌아가는 어플리케이션을 각각을 구분해준다!

IP는 아파트 동을 의미하고 PORT는 몇호인지!

0-65535 할당 가능
0-1023: 잘 알려진 포트
FTP - 20,21 HTTP-80

DNS(Domain Name System)

IP를 사용자가 항상 기억해서 검색하기 어렵다! -> IP는 심지어 바뀔수도 있음!!

그래서 DNS서버에서 도메인 명을 사서 도메인을 검색하면 IP를 전달하고 그 IP로 요청을 보낸다!

URI(URN+URL)

그냥 urL은 로케이터 즉 리소스의 위치!

http://example.com:8042/over/there?name=ferret@nose

URN은 리소스의 이름

urn:example:animal

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글