Spring 강의/network

[network] (1) - 인터넷 네트워크

lxexjx 2022. 4. 4. 15:09


모든 html,이미지+ 앱과 서버가 통신할 때 + 서버와 서버가 통신할 때도 http프로토콜 위에서 주고 받음.

[ IP ]
IP (인터넷 프로토콜): 지정한 IP주소로 메세지를 전달 할 수 있도록 정해놓은 최소한의 규칙, 패킷이라는 단위로 전달.
*IP패킷 규칙이란? 나의 IP와 목적지 IP를 적어서 IP 패킷을 만들어서 넣고 메세지를 넣고 인터넷 망에 던지다보면 노드를 통해 목적지 IP 주소까지 도착.

 

전송 데이터 밖에 나의 ip와 목적지 ip를 만들어서 메세지와 함께 ip패킷을 인터넷 망에 던지면 노드끼리 서로 던지면서 목적지ip까지 도달. 

 


IP프로토콜의 한계

1. 비연결성 : 패킷받을 대상이 없거나 서비스 불능 상태여도 그냥 전송

 

2. 비신뢰성 : 패킷이 사라지거나 여러개 보낼 때 순서대로 안올수도 있음.

 

3. 프로그램 구분 : 같은 IP에서 여러 애플리케이션이 사용한다면 어떻게 구분할 것인지(ex. 끊어서 보낼 시에 중간에 다른 노드를 탈 수 있음)


 

socket라이브러리를 통해서 os계층에 메세지를 넘겨, 그러면 os계층에서 메세지에다가 TCP정보를 한번 씌우고 또 한칸 내려서 IP와 관련된 데이터들을 씌워(IP패킷 생성). 그후에 네트워크 인터페이스를 통해서 랜카드를 통해서 나가.
*이더넷프레임 : 물리적인 정보 포함.

1.IP패킷 정보

출발지와 목적지 IP를 넘겨.


2.TCP/IP패킷 정보

TCP 와 관련된 정보가 들어감. 출발지, 목적지 port와 순서,검증.. 과 관련된 정보가 들어감(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- 동 호수

패킷 보낼 때 출발지 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대신 도메인 명을 등록해서 사용하도록.