TCP/IC

2023. 1. 6. 15:26자바멘토링

 

Application Layer :

특정 서비스를 제공하기 위해 애플리케이션 끼리 정보를 주고 받을 수 있다.

FTP,HTTP,SSH,Telnet,DNS,SMTP

 

Transport Layer

송신된 데이터를 수신측 애플리케이션에 확실히 전달하게 한다.

TCP,UDP,RTP,RTCP

 

Internet Layer:

수신측 까지 데이터를 전달 하기 위해 사용된다.

IP,ARP,ICMP,RARP,OSPF

 

Network Access Layer:

네트워크에 직접 연결된 기기 간 전송을 할 수 있도록 한다.

Ethernet,PPP,Token Ring

 

 

www.google.com을  을 웹 브라우저에 입력하면 무슨일이 일어나는가?

 

1.http reauset를 보낸다.

2.해당 요청을 인터넷을 통해 구글 서버로 전달하기 위해서는 패킷을 만들어야 한다.

(패킷에는 각 계층에 필요한 정보들이 담겨야 한다.)

 

3.시작지 포트 번호와 , 목적지 포트 번호를 알야하 한다 , 시작 포트는 내  컴퓨터에서 만든 소켓의 포트 번호라서 

알고 있고 목적지 포트 또한 80 웹서버의 웰노운 포트 번호이다

4. 시작 ip주소, 목적지 ip주소  목적지 ip주소는 아직 모른다 도메인 주소밖에 DNS 프로토콜을 이용해서 

알수있다.

5. 브라우저는 OS에게 도메인에 대한 IP를 알고싶다고 요청하면 OS에서 DNS서버로 요청을 보낸다.

여기서 어떻게 OS가 DNS 주소를 알고있는가? 이것은 컴퓨터에 내장 되어있기 때문에 알 수있다.

 

6.MAC주소를 알아야 한다 , 여기서 MAC주소 대신 물리적으로 연결된 우리 공유기에 MAC주소가 필요하다 

이공유기를 통해 다른 네트워크와 연결이 가능하니 이것을 "게이트 웨이"라고 부른다.

 

그럼 어떻게 구글의 MAC주소를 알수 있을까???

ARP사용

"IP주소를 MAC주소로 바꾸어주는 주소해석  프로토콜"

 

7. 요청 보내기전에 알아야 한다.

 

TCP는 연결 지향형 프로토콜이기에 송신측과 수신측이 서로 연결되는 작업이 필요하다.

 

3 -Way -handshaking이라고 부른다.

 

tcp헤더에 표시한 플로그 들이 사용된다 .(컨트롤 비트)

이렇게 서로 연결을 한다.

 

8. 부가적으로 내가 사용하는 컴퓨터는 private ip를 사용하고 있다.

외부의 네트워크 환경에서 ip주소를 찾지 못해 공유기를 통해서 나갈때 public ip주소로 변화낳여 나가는 작업이

필요하다 .  이러한 작업을 NAT ( Network Addess Translation)

9.공유기 걸치고  여러 라우터를 걸쳐가는데  라우터는 네트워크와 네트워크를 연결해주는 역할을 한다.

경로를 찾아나가는 과정"라우팅"

10. 라우팅을 통해 구글 서버가 연결된 라우터 까지 도착을 하면 패킷의 IP헤더에 기록되 구글 서버 IP주소를 통해 

MAC주소를 얻어오는데 이때 ARP 사용 라우터가 연결된 네트워크에 브로드 캐스팅이 된다.

11.목적지 구글 서버가 자신의 IP로 온 ARP 요청을 받고  MAC주소를 응답 해준다.

목적지 구글서버의 MAC주소를 알게 되니  데이터가 물리적으로 전달 될 수 있다.

*네트워크 레이어와 인터넷 레이어를 통해서 목적지에 전달을 했으니 이제 나머지 레이어를 보겠다.

 

12. 트렌스 포트 레이어에 목적지 포트 번호에는 80이 적혀있다.

이것을 보고 80번 포트를 사용하고있는 애플리케이션에게 데이터를 전달 해줘야 한다.

 

13.어플리케이션 레이어까지 오면 웹서버가 사용될 http Request 데이터를 얻을수 있다.

이제 서버에서 정상적으로 http Request를 받고 응답을 한다 "/"에 매핑된 GET요청을 처리 해서 

적절한 HTML을 응답 해준다.

 

 

14.HTTP요청과 응답 과정이 끝나면 연결을 종료 해야 한다.컨트롤 비트를 사용

 

 

이것을 "4-Way-handshaking 이라고한다.

 

14. 서버가 FIN 보내는 과정에서 문제 데이터가 늦게 도착 하는 경우 클라이언트가 소켓을 닫아버리면

그 패킷은 못받게 된다  그래서 일정시간동안 닫지 않고 잉여패킷을 기다게되는데 이것을 time-wait 이라고 한다.

 

 

 

참고:(295) [10분 테코톡] 🔮 수리의 TCP/IP - YouTube

소켓 프로그래밍 - 소켓의 의미/특징/종류 · on1ystar

'자바멘토링' 카테고리의 다른 글

Future을 이용한 비동기 프로그래밍  (0) 2023.01.01
리플렉션을 이용한 json 직렬화  (0) 2022.12.28
파일디스크립터  (0) 2022.12.18
리플렉션  (0) 2022.12.15
Try - With - Resource  (0) 2022.12.04