모든 html,이미지+ 앱과 서버가 통신할 때 + 서버와 서버가 통신할 때도 http프로토콜 위에서 주고 받음.
[ IP ]
IP (인터넷 프로토콜): 지정한 IP주소로 메세지를 전달 할 수 있도록 정해놓은 최소한의 규칙, 패킷이라는 단위로 전달.
*IP패킷 규칙이란? 나의 IP와 목적지 IP를 적어서 IP 패킷을 만들어서 넣고 메세지를 넣고 인터넷 망에 던지다보면 노드를 통해 목적지 IP 주소까지 도착.
전송 데이터 밖에 나의 ip와 목적지 ip를 만들어서 메세지와 함께 ip패킷을 인터넷 망에 던지면 노드끼리 서로 던지면서 목적지ip까지 도달.
IP프로토콜의 한계
socket라이브러리를 통해서 os계층에 메세지를 넘겨, 그러면 os계층에서 메세지에다가 TCP정보를 한번 씌우고 또 한칸 내려서 IP와 관련된 데이터들을 씌워(IP패킷 생성). 그후에 네트워크 인터페이스를 통해서 랜카드를 통해서 나가.
*이더넷프레임 : 물리적인 정보 포함.
1.IP패킷 정보
2.TCP/IP패킷 정보
[TCP] 전송제어 프로토콜
1. 연결지향적 : 일단 연결을 하고 메세지를 보내ex- 꺼져있으면 연결이 안되겠지
2. 데이터 전달 보증 : 메세지 패킷이 중간에 누락되면 내가 알 수 있음.
3. 순서 보장
그래서 TCP는 신뢰할수 있는 프로토콜이며 현재 대부분 사용함.
1)연결지향적
TCP/IP프로토콜로 연결하면
1) 클라이언트에서 서버로 syn이라는 메세지를 보내
2) 서버에서 ack(알았다)라는 메세지를 보내면서 나도 연결해줘(syn)라는 메세지 보내
3) 클라이언트가 알았다고 ack보내, 서로syn을 보낸거지.양쪽다 ack한거고
이렇게 3-hand shake하면 서로 믿을수 있고 연결됐다고 인식함. 그 다음에 데이터를 주고 받아 근데 이거는 물리적인 연결이 아니라 이론적논리적인 연결임. 중간에 수많은 서버가 연결돼있음(나만을 위한 전용 연결은 아님)
2. 데이터 전달 보증
TCP가 붙게 되면 데이터를 전송하면 서버에서 잘 받았다고 보내줘, 그래서 클라이언트가 메세지가 잘 전달됐는지 확인가능
3. 순서 보장
패킷1,2,3 순으로 보내냈는데 1,3,2순으로 도착하면 다 버리고 2번부터 다시 보내.(왜냐면 TCP/IP정보에 전송, 제어, 검증 정보가 다 있기 때문에)
[UDP]
연결지향적이지도 데이터 전달 보증하지도 순서 보장하지도 않음.
IP와 거의 비슷하지만 port가 추가됨
port란? 하나의 ip에셔 여러 애플리케이션을 구분할 때. 내 ip로 여러 패킷이 오면 구분할 때 사용.
데이터 양도 적고 속도도 빨라서 원하는 애플리케이션 레벨에서 최적화 가능.
[port]
클라이언트 pc가 한번에 여러 개의 서버와 통신하면 각각 패킷들이 클라이언트에 오는데 게임에서 필요한 패킷인지, 화상통화에서 필요한 패킷인지 알수 없어. 어떻게 구분할 것인가 ip만으로 해결안됨
IP에 PORT라는 개념을 더해
IP는 목적지의 서버를 찾는것, PORT는 서버안에서 돌아가는 애플리케이션들을 구분하는 것
패킷 보낼 때 출발지 ip랑 port까지 보내서 서버에서 포트를 알수 있음
[DNS] - IP가 기억하기 어렵거나 변경될 수 있는 문제 해결됨
IP는 기억하기 어렵거나 변경되면 접근불가~ 중간에 바뀔 수도 있음
0) ip는 ~야 등록을 해놔.
1) 먼저 도메인을 찾아 그래서 dns서버에 google.com의 ip를 달라고 하면
2) dns서버가 응답을 줘.
3) 그래서 접속하면 됨.
<정리> 복잡한 인터넷망에서 메세지를 보내기 위해서는!
IP : 메세지를 보내기 위해 필요.
TCP : IP로는 메세지 잘 도착 신뢰 어려워서 TCP가 해결.
UDP : IP +PORT
PORT : 같은 IP안에서 통신할 애플리케이션 구분.
DNS : 어려운 IP대신 도메인 명을 등록해서 사용하도록.
'Spring 강의 > network' 카테고리의 다른 글
[network] - (6) HTTP 상태코드 (0) | 2022.04.07 |
---|---|
[network] - (5) HTTP메서드 활용 (0) | 2022.04.05 |
[network] - (4) HTTP 메서드 (0) | 2022.04.04 |
[network] - (3) HTTP 기본 (0) | 2022.04.04 |
[network] - (2) URI와 웹 브라우저 요청 흐름 (0) | 2022.04.04 |