개발자가 된지 어언 2년 반.. 햇수로 내가 3년차.,,....?
너무너무 부족하고 모르는게 산더미!!
기초로 돌아가서 처음부터 기본의 근본부터 지식을 쌓아보자
IP란?
인터넷 프로토콜 역할
- 지정한 IP주소에 데이터를 전달한다.
- 패킷이라는 통신 단위로 데이터를 전달한다.
여기 클라이언트에서 패킷에 출발지의 ip 와 도착지의 ip 그리고 내용정보를 담아서 보내면
도착지에서도 그 정보를 받게 된다.
그러면 서버에서도 잘 받았다는 패킷을 다시 전달해준다.
이렇게 단순히 전달하고 받고 한다면 좋겠지만,
클라이언트는 서버가 없거나 불능상태여도 전송을 해버리는 경우가 생길 수 있고, (비연결성)
중간에 패킷이 사라지거나, 순서대로 전달되지 않는다면 신뢰할 수 없는 경우가 생기기 마련이다. (비신뢰성)
위 문제들을 해결해 줄 수 있는게 바로
TCP, UDP
ip 에서는 출발지와 목적지, 데이터의 내용을 들고 갔다면 (마치 택배처럼)
TCP는 ip 패킷 안에 출발지의 port 와 목적지의 port, 그리고 전송제어, 순서, 검증정보 등등이 들어가게 된다.
TCP의 특징 (전송 제어 프로토콜 Transmission Control Protocol)
1. 연결지향 : TCP 3 way handshake (가상 연결)
위 그림처럼 클라이언트가 먼저 syn을 보내면 (야~~거기있니~~?!)
서버에서는 ack 수락하고 (어엉 있어~~)
다시 클라이언트가 오 ack ! (오 그럼 보낸다~~!) 하면서 서로를 확인하는 연결 과정이라고 볼 수 있는것이다.
이렇게 되면
클라이언트와 서버의 신뢰를 높일 수 있다.
서로가 연결 되었다고 인지할 수 있으니까~!
이 과정 후 데이터를 전송하기 때문에 IP 의 문제였던 서버가 없어지거나 중간에 소실되거나 했던 그런 문제들이 생겼다면
위의 ack이 떨어지지 않았을 것이기 때문에 이후 행동을 하지 않게 될 것이다.
2. 데이터 전달 보증
3. 순서 보장
순서가 다르게 도착한다면 다시 보내라고 돌려보냄!
위 특징들이 가능한 이유는 아래 그림처럼
TCP 세그먼트 안에 모든 정보가 있기 때문에 가능하고, 신뢰할 수 있다는 것이다.
근데 세번 서로를 확인하고 모든 정보를 가지고 있는 그런 것들이기 때문에 조금 느리다는것이 단점..!!
UDP라는 것도 있는데,
얘는 단순하고 빠르고,
IP 거의 비슷하면서 여기에 PORT + 체크섬 정도가 추가 되었다는 것이다.
요즘은 UDP가 뜨는 추세,,?!?!?라지만 거의 TCP를 쓴다고 한다!~!
PORT
ip로만 가지고 여러가지 패킷을 준다면 어떻게 구분을 하지?
그래서 TCP/IP패킷 안의 정보에 ip + port 라는 정보가 있는건데,
서버 연결의 200.200.200:8080 이런식으로 PORT로 서로 다른 서버를 구분하는 것인것이다.
ip가 아파트라면 port는 호수 !
DNS? (Domain Name System)
ip는 숫자로 이뤄져서 참 기억하기가 어렵다.
그리고 ip는 변경되기도 쉽다.
그래서 DNS 가 있는겨
DNS 서버에서 google.com = 200.200.2 이런식으로 저장을 해놔버리는거다~ easy~
참고:
인프런-모든 개발자를 위한 HTTP 웹 기본 지식 (김영한)
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
'기타' 카테고리의 다른 글
HTTP 웹 기본 지식 (3) - HTTP 기본 (0) | 2024.06.20 |
---|---|
HTTP 웹 기본 지식(2) - URI와 웹 브라우저 요청 흐름 (0) | 2024.06.20 |
[Jenkins] Jenkins GitLab 연동하기 (0) | 2023.03.06 |
[리눅스] Unknown command: service (0) | 2023.03.03 |
[리눅스] Jenkins 설치과정 (0) | 2023.03.03 |