본문 바로가기
공부/네트워크

TCP/IP 전송과정을 알아보자(상세정리)

by 맑은청이 2020. 9. 2.
728x90
반응형

https://com24everyday.tistory.com/246

 

TCP/IP 방식의 계층

TCP/IP 계층은 다음과 같습니다. 계층 데이터 전송 단위 주요한 프로토콜 비고 응용 메시지 약 65,000개 송신 시작 계층 전송 데이터그램/세그먼트 UDP와 TCP 네트워크 패킷 IP와 ICMP등 데이터 링크 프�

com24everyday.tistory.com

이번 게시물은 저번에 배운 계층들에 역할을 총 집약해놓은 겁니다. 

 

현재 PC 에서 DNS 캐시 테이블과 ARP 캐시 테이블이 빈 상태이고 DNS 서버가 8.8.8.8 번일 경우 'telnet police.go.kr 80' 과 같은 웹 서버 접속 과정을 TCP/IP 구조에 따라 가보겠습니다. 

그럼 다음과 같이 뜨네요. 이는 윈도우 기본 기능으로 telnet 클라이언트가 사용됨으로 설정이 안되어 있기 때문에 설정해주어야합니다. 

 

제어판 > 프로그램 > Windows 기능 켜기/끄기

 

 

그러고 다시 명령어를 입력해줍니다. 검은 화면이 뜰텐데요. 일단 이론적인 부분을 짚어봅시다. 

 

 

계층별 주소

계층 헤더 출발지 주소 목적지 주소 비고
전송 TCP 세그먼트 1,024번 이후 80번  
네트워크  IP 패킹 192.168.0.13 116.67.118.148 DNS 동작
데이터 링크 이더넷 프레임 00-24-1D-DF-8C-47  00-26-66-86-f8-0c ARP 동작 

 

엔터를 치면 다음과 같은 동작이 수행됩니다. 

 

1. 목적지 IP 주소에 해당하는 도메인 네임을 하드 디스크에서 검색, 윈도우 운영체제라면 'C:\Windows\System32\drivers\etc\hosts' 에서 검색한다.

 

 

2. 하드 디스크에서 도메인 네임 검색이 안되면 DNS 캐시 테이블에서 검색한다. 

(여기는 지금 비어있습니다. 그렇게 가정했습니다.)

 

 

3. DNS 캐시 테이블에서도 찾을 수 없다면 내부에서 DNS 서버 IP 주소를 검색한 뒤 로컬 IP 주소와 서버 IP주소의 네트워크 ID 를 비교합니다. 출발지와 목적지의 네트워크 ID 가 다르기 때문에 DNS 서버로 가기 위해 ARP 테이블에서 라우터의 맥주소를 검색한다. 

(출발지 : 192.168.0.13 목적지 : 116.67.118.148 )

 

 

4. ARP 캐시 테이블에서 맥주소를 검색하지 못했다면 네트워크 계층에서는 1개의 ARP 헤더를 생성해서 데이터링크로 보냅니다. (IP주소에 대응되는 맥주소를 찾기 위해)

 

-ARP 헤더

ARP 요청 헤더 (네트워크)

 

5. 데이터 링크 계층에서는 네트워크 계층으로부터 넘어온 ARP 헤더 앞뒤로 각각 헤더와 트레일러(trailer)를 추가해 1개의 이더넷 프레임을 생성한 뒤 물리 계층으로 이더넷 프레임을 넘긴다. 트레일러는 오류 정보를 담는다. 

 

-이더넷 프레임

트레일러(데이터 링크) ARP 요청 헤더 (네트워크) 이더넷 헤더 (데이터 링크)

 

 

6. 물리 계층에서는 데이터 링크 계층으로부터 넘어온 이더넷 프레임을 비트로 변환, 브로드캐스트 방식에 따라 ARP 요청을 LAN 전체영역으로 전송한다. 해당되는 즉, 맥주소를 아는 라우터 유니캐스트 방식으로 ARP 응답을 전송한다. 

 

 

7. 라우터로 부터 응답이 오면 ARP 헤더에서 목적지 맥 주소를 추출해 ARP 캐시 테이블에 반영한다.

 

 

8. 응용 계층에서는 UDP 속성에 따라 도메인 네임 질의 정보를 담은 1개의 DNS 페이로드를 생성한 뒤 전송 계층으로 DNS 페이로드를 넘긴다. 

 

-DNS 페이로드

UDP 방식에 따라 작성한 DNS 페이로드 (응용) 

 

9. 전송 계층에서는 응용계층에서 넘어온 DNS 페이로드 앞에 UDP 헤더를 추가 , 이 UDP 데이터 그램을 생성 후 네트워크 계층으로 넘긴다. 

 

-UDP 데이터 그램 

DNS 페이로드(응용) UDP헤더(전송)

 

 

10. 네트워크 계층에서는 전송계층에서 넘어온 UDP 데이터 그램 앞에 IP 헤더 추가 ,1개의 IP 패킷 생성한 후 데이터 링크 계층으로 넘긴다.

 

-IP 패킷 

DNS 페이로드(응용) UDP헤더(전송) IP 헤더(네트워크)

 

 

11.데이터 링크 계층에서는 네트워크 계층에서 넘어온 IP 패킷 앞뒤로 각각 헤더와 트레일러 추가해 1개의 이더넷 프레임을 생성해 물리계층으로 이더넷 프레임을 넘긴다. 

 

-이더텟 프레임

트레일러(데이터 링크) DNS 페이로드(응용) UDP헤더(전송) IP헤더(네트워크) 이더넷 헤더(데이터 링크)

 

12. 물리 계층에서는 데이터 링크 계층으로부터 넘어온 이더넷 프레임을 비트로 변환한 뒤 유니캐스트 방식에 따라 라우터로 해당 비트를 전송한다. 

 

 

13. 목적지 DNS 서버(8.8.8.8번) 로부터 도메인 네임 질의에 대한 응답이 오면, 해당 IP 주소를 DNS 캐시 테이블에 반영한다. 

 


 

 

14. 응용 계층에서는 TCP 속성에 따라 HTTP 정보를 담은 페이로드 생성 후 전송 계층으로 넘긴다. 

 

-HTTP 페이로드

TCP 방식에 따라 작성한 HTTP 페이로드(응용)

 

15. 전송 계층에서는 HTTP 페이로드를 자기 버퍼에 저장한다. 

 

16. 전송 계층에서는 SYN 플래그를 설정한 TCP 헤더를 생성해 네트워크 계층으로 TCP 헤더를 넘긴다.

 

- TCP 헤더

SYN 플래그를 설정한 TCP 헤더(전송)

 

17. 네트워크 계층에서는 전송 계층으로부터 넘어온 TCP 헤더 앞에 IP 헤더를 추가해 IP 패킷을 생성한 뒤 데이터 링크 계층으로 넘긴다. 

 

 

- IP 패킷

TCP 헤더(전송) IP 헤더(네트워크)

 

 

18. 데이터 링크에서는 ARP 캐시 테이블을 참조해 네트워크 계층으로부터 넘어온 IP 패킷 앞뒤로 헤더와 트레일러를 추가해 1개의 이더넷 프레임을 생성한 뒤 물리 계층으로 이더넷 프레임을 넘긴다.

 

-이더넷 프레임

트레일러(데이터 링크) TCP 헤더(전송) IP 헤더(네트워크) 이더넷 헤더(데이터 링크)

 

19. 물리 계층에서는 데이터 링크 계층으로부터 넘어온 이더넷 프레임을 비트로 변환한 뒤 유니캐스트 방식에 따라 라우터로 해당 비트를 전송한다. 

 

20. 목적지 웹 서버(116.67.118.148) 로부터 SYN/ACK 플래그가 오면 전송 계층에서는 ACK 플래그를 설정한 1개의 TCP 헤더를 생성해 네트워크 계층으로 TCP 헤더를 넘긴다. 

 

-TCP 헤더 

ACK 플래그를 설정한 TCP 헤더(전송)

 

 


 

21. 목적지와 3단계 연결 과정을 마치면 전송 계층에서는 자기 버퍼에 저장했던 HTTP 페이로드를 추출한 다음 이를 여러 개로 단편화한다. 이제 조각난 HTTP 페이로드에 각각 TCP 헤더를 추가해 여러 개의 TCP 세그먼트를 생성한 후 네트워크 계층으로 TCP 세그먼트를 넘긴다.

 

-TCP 데이터그램

HTTP 페이로드(전송) TCP 헤더(전송)

 

22. 네트워크 계층에서 전송 계층으로부터 넘어온 각각의 TCP 세그먼트 앞에 IP 헤더를 추가해서 여러 개의 IP 패킷을 생성해 데이터 링크 계층으로 넘긴다. 

 

- IP 패킷

 

HTTP 페이로드(전송) TCP 헤더(전송) IP 헤더(네트워크)

 

 

23. 데이터 링크 계층에서는 ARP 캐시 테이블을 참조해 앞 뒤로 헤더와 트레일러를 추가해 여러 개의 이더넷 프레임을 생성한 뒤 물리 계층으로 이더넷 프레임을 넘긴다. 

 

-이더넷 프레임

트레일러(데이터 링크) HTTP 페이로드(전송) TCP 헤더(전송) IP 헤더(네트워크) 이더넷 헤더(데이터 링크)

 

24. 물리 계층에서는 데이터 링크에서 넘어온 이더넷 프레임을 비트로 변환한 후 유니캐스트 방식에 따라 라우터로 해당 비트를 전송한다. 

 

이후의 과정을 다음과 같다. 

 

이는 처음 명령어를 입력 후 options 를 입력하면 나옵니다. 

 

 

이렇게 TCP/IP 방식에 따른 일련의 송신 과정을 총정리해보았습니다. 

 

728x90
반응형

'공부 > 네트워크' 카테고리의 다른 글

TCP/IP 방식의 계층별 취약점에 기반한 공격 유형  (0) 2020.09.23
TCP/IP 네트워크 공격 유형  (0) 2020.09.08
TCP/IP 방식의 계층  (0) 2020.08.31
데이터 전송 단위  (0) 2020.08.22
UDP 방식과 TCP 방식  (0) 2020.08.21