💡웹이나 HTTP도 전부 인터넷 네트워크 망 기반으로 동작하기 때문이에요.
👉 클라이언트 컴퓨터가 서버 컴퓨터에게 필요한 데이터를 자신에게 달라고 요청합니다.
👈 요청을 받은 서버는 그에 따른 응답을 해줍니다.
그런데!!
인터넷 망은 굉장히 굉장히 복잡하게 이루어져 있는데, 어떻게 그 복잡한 길에서 정확하게 목적지를 찾아갈까요?
💡 IP라는 네비게이션 덕분이죠.
복잡한 인터넷 망에서 아주 멀리 떨어진 컴퓨터에게 보내야 합니다. 어디로 보낼지 어떻게 알아야 할까요?
컴퓨터마다 고유한 주소
가 있습니다. 우리도 모두 거주지에 대한 주소가 있죠? 택배보낼 때 혹은 주문할 때 배송지를 적어야 하는 것을 생각해봅시다.
우리가 보낸 데이터는 보내고자 하는 IP 주소, 컴퓨터 주소
로 전송(배달)되게 됩니다.
비연결성
비신뢰성
중간에 보낸 패킷이 사라지면?.. 보낸 나는 사라졌는지 모릅니다...
패킷을 여러개를 보냈는데, 서버에 패킷이 순서대로 안오면?..
서버가 순서대로 받았는지 나는 모릅니다...
클라이언트 전송 메시지: 넵! 내일 출근 안전하게 하겠습니다.
(데이터 소실)
서버에서 받은 메시지: 넵! 내일 출근 안 하겠습니다.
😨😨😨😨😨
프로그램 구분
이런 IP의 한계를 극복하도록 도와주는 것이 TCP라는 친구입니다.
⭐주의!
실제로 물리적인 연결과는 다릅니다. 자기들끼리 요청과 응답을 주고 받고 연결되었겠거니~ 하는 것입니다.
클라이언트가 서버로 데이터 전송
서버: 데이터 잘 받음
서버에서 응답이 안오면???.... 문제가 있는데?
TCP와 같은 계층인데 TCP의 특징들이 모두 빠져있음
IP와 거의 같은데 PORT정보, 치크섬 정도만 추가
같은 IP를 사용하는 컴퓨터, 즉 같은 컴퓨터가 여러 서버의 응답을 받을 수 있도록 만들어주는 것.
같은 IP내에서 프로세스를 구분해주는 것
요약
복잡한 인터넷 망에서 데이터 통신을 위해서 IP라는 프로토콜을 사용한다.
하지만 IP 프로토콜만 가지고는 데이터가 잘 도착했는지 신뢰하기도 어렵고, 포트라는 개념이 없어 메시지의 순서가 꼬일 수도 있다.
TCP라는 프로토콜이 IP의 문제점을 보완해준다.
UDP라는 프로토콜도 있었는데 IP와 유사하지만 Port정보를 포함하고 있다.
포트는 같은 IP 내에서 동작하는 애플리케이션 중에 통신 할 애플리케이션을 선택할 때 사용한다.
DNS는 사람이 기억하기 어려운 형태인 IP 주소를 기억하기 쉬운 도메인으로 바꿔주는 시스템이다.