- 인터넷 통신
- IP(Internet Protocol)
- TCP, UDP
- PORT
- DNS
클라이언트와 서버가 바로 직통으로 연결되어있으면 문제가 되지 않는다.
하지만 물리적으로 거리가 먼 통신을 하기 위해서는 인터넷이라는 중간 다리를 거쳐야한다.
하지만 인터넷은 신이 아니다. 즉, 인터넷도 여러 노드끼리 연결되어있다. 경유지가 많다는 소리다.
*IP(인터넷 프로토콜)
각각의 컴퓨터엔 고유의 IP 주소가 있다.
인터넷 프로토콜은 지정한 IP 주소에 패킷(Packet)이라는 단위로 데이터를 전달한다.
하지만 IP의 문제점이 여기서 생긴다.
- 비연결성
우리가 편지를 보냈는데 받는 사람이 이사갔으면? 그래도 편지는 보내진다.
패킷을 받을 대상이 없거나 서버가 꺼져있는 등의 서비스 불능 상태여도 패킷은 전송이 된다. - 비신뢰성
인터넷을 거쳐가면서 중간에 패킷이 소멸되거나
패킷을 여러개를 순서있게 보냈는데 순서대로 안간다면? - 프로그램 구분
내가 컴퓨터에서 게임도 하고 음악도 듣고 메일도 보내고 하는 등의 여러 서버에서 통신하는 애플리케이션이 있다면 이걸 구분할 수 있을까?
이걸 해결하고자 나온 것이 TCP, UDP다.
메세지에 TCP를 씌우고, IP를 씌우고 보낸다 생각하면 편하다.
IP에선 출발지, 목적지 IP 주소가 필수로 필요할 것이다.
TCP에선 여기서 '전송제어, 순서, 검증 정보' 등이 추가적으로 들어간다.
*TCP(전송 제어 프로토콜, Transmission Control Protocol)
- 연결 지향 - TCP 3 way handshake(가상연결)
클라이언트와 서버가 서로 연결을 신뢰하기 위한 과정이라 생각하면 된다.
1. SYN (신뢰 ok?)
2. SYN + ACK(OK. 너도 신뢰?)
3. ACK(OK.)
요즘은 최적화를 통해 handshake를 마치고 데이터를 보내는 것이 아니라
3번째 ACK를 보내면서 데이터도 같이 전송해버린다고 한다.
- 데이터 전달 보증
IP의 단점이었던 데이터 전달을 보증하지 못하던 문제를 해결 - 순서보장
만약 데이터 패킷 순서가 잘못 온다면? 해당 순서대로 다시 보내라고 클라이언트에게 메세지를 보낸다.
*UDP(사용자 데이터그램 프로토콜 User Datagram Protocol)
기능이 거의 없는 하얀 도화지를 생각하면 된다.
스타크래프트 할 때 많이 쓴 거 같은데..
TCP가 가지고 있던 기능들인 handshake도 없고, 데이터 순서보장도 없고 데이터 전달 보증도 없다.
단순하고 빠른 특징을 가지고 있다. 아무래도 TCP에선 SYN, SYN+ACK, SYN을 거쳐야 하니 시간이 걸리니까.
다만 사용자 정의로 애플리케이션에서 추가작업을 할 수 있다!
* PORT (항구라는 뜻)
우리가 게임도 하고 화상통화도 하고 웹 브라우저 요청도 하는데 IP주소는 하나이다.
이러면 구분을 할 수 있을까?
구분할 수 있는 지표가 하나 더 필요하다.
우린 아까 TCP에서 출발지 PORT, 목적지 PORT도 보낸다고 정리했다.
즉 통신을 할 때, IP주소를 말하면서 나 너의 저기 포트로 연결할 거야 까지 말해주는거다.
IP주소를 아파트로 비유한다면, PORT들은 몇 동, 몇 호로 비유하면 이해하기 편하다.
0~65535번호까지 할당이 가능하며, 0~1023은 잘 알려져있어서 사용하지 않는 것이 좋다.(이미 기존에 사용하고 있을 것이므로)
대표적으로 알고있는 HTTP는 80, HTTPS 는 443을 쓰고 있다.
*DNS
IP주소는 생각보다 기억하기가 어렵다. 또 변경될 수도 있다.
우리가 일일이 IP주소를 외워서 타자칠 순 없으니까.
이걸 해결하고자 DNS(Domain Name System 도메인 네임 시스템)
즉, 전화번호부 기능을 하는 얘를 만들었다.
도메인 명을 넣어주면 IP주소를 리턴해주는 친구다.
'스프링 강의 필기 > HTTP 웹 지식 정리' 카테고리의 다른 글
6) HTTP 상태코드 (0) | 2022.07.20 |
---|---|
5) HTTP 메서드 활용 (0) | 2022.07.19 |
4) HTTP 메소드 (0) | 2022.07.16 |
3) HTTP 기본 (0) | 2022.07.16 |
2) URI과 웹 브라우저 요청 흐름 (0) | 2022.07.16 |