딩굴댕굴

CCNA_03 데이터 전송 프로토콜

by jennysgap


03 데이터 전송 프로토콜.txt

3일차 - 데이터 전송 프로토콜.txt


@ARP 동작 과정.pkt

@패켓 캡처 내용.pcap



03_ 필기한것

3일차_필기안한것



=========================================================================



구글 DNS 주소는 알아 둬야 함

그 외에 KT, SK, 데이콤, 하나로 정도는 알아 두기!

블로그 net123.tistory.com   DNS서버 주소

*네이버를 알려면 dns서버를 알아야 하니  (셋팅할 때 필요)



netstat -n     내 상태

nslookup 주소     특정 도메인에 대한 ip 주소 알 수 있음

ipconfig /all



==============================================================================



@ 데이터 전송 프로토콜


1. TCP(Transmission Control Protocol)


 - 데이터를 보낼 때, 컨트롤 하는 기능까지 포함되어 있다.

 - 우리가 사용하고 있는 전화 환경이랑 비슷함 (전화연결이 먼저 되어야 전화가 가능하기 때문에)

   요청,응답을 하려면 먼저 상대방과 연결이 되어야 한다는 의미

 - TCP 에서는 데이터를 세그먼트라고 표현함

 - Layer 4 계층 프로토콜

 - 연결 지향성 프로토콜 : 상대방과 통신 수립 연결을 실시하고 난 이후, 데이터 요청 및 응답 실시

 - '3-Way 핸드 쉐이킹' 동작 실시


A(클라이언트) B(서버)

Syn ->

<- Syn, Ack

Ack -> 

~ 통신 수립 완료 ~

  (ESTABLISHED)

데이터/서비스 요청 ->

<- 데이터/서비스 응답



ex)

연결을 하기 위해서는 Syn (신크)를 보내봄

A(클라이언트)     B(웹-서버)

Syn->                 |

<- Syn, Ack       | 3웨이핸드쉐이킹

Ack->                 |

통신 연결 성립 (ESTABLISHED)

HTTP 요청 ->

<- HTTP 응답



 - 이러한 연결을 총 3번 왔다갔다 한다고 해서 '3-way  핸드쉐이킹' 동작이라고 함

 - 성립되었다. 연결되었다라는 의미를 'ESTABLISHED'

 - 보안하시는 분은 이걸 꼭 알아야 해요~!!      'ESTABLISHED'

 - @패켓 캡처 내용.pcap 실행  tcp 검색 94, 95, 96번 3-way 핸드쉐이킹 확인

    94번 Flags 열기 Syn 1, Ack 0 0x___ --> 다음엔 16진수라는 의미

    95번 Flags 열기 Syn 1, Ack 1

    96번 Flags 열기 Syn 0, Ack 1


그냥 참고 말~~

플러딩 공격 : 무언가를 많이 보내는 공격

스푸핑 공격 : IP 주소를 변경하여 공격

1. 자기 존재를 숨기고

2. 응답을 자기가 받으면 안됨

    (클라이언트보다 서버가 더 좋기때문에 오히려 자기가 과부화 됨)

    이런 것들은 툴이 있음. 툴을 많이 사용하세욥~



한번 연결해서 오랫동안 하는 서비스를 보통 tcp로 씀

[참고] TCP Control Flag (6bit)


 - urg (1.....) : 긴급한 데이터 표기

 - ack (.1....) : 확인 응답/승인

 - psh (..1...) : 수신처리 이후, 상위 프로세스로 처리

 - rst (...1..) : 강제 종료 (reset은 ack없이 바로 종료)

 - syn (....1.) : 통신 개시

 - fin (.....1) : 정상적인 종료 (finish는 ack를 받아야 종료)



 - 데이터 스트림 서비스 : 데이터를 세그먼트 단위로 생성하여 전송 및 수신 처리 실시

                (순서 번호 및 확인 번호 사용)


 - 흐름 제어 기능 : stop & wait 기법 -> 슬라이딩 윈도우 기법


stop & wait : 수신한 세그먼트 개수만큼 Ack를 주는 방법

슬라이딩 윈도우 : 수신한 세그먼트에 대한 Ack 1개를 주는 방법


/*

 stop & wait 기법

하나씩 분해해서 보내는데 이때 시컨스 넘버를 부여한다. 받는 사람은 시컨스 넘버대로 조립

분리된 단위 (세그먼트)

수신한 세그먼트 개수만큼 ack를 줌 (이때 ack에 넘버를 부여하는데 시컨스 넘버대로 부여해서 보낸다.)

많은 양을 보내면 ack 양이 너무 많아짐

A B

1, 2, 3, 4

ack1, 2, 3, 4


그래서 요즘은 다른 방법으로 씀

슬라이딩 윈도우 : 시컨스 넘버 1, 2, 3, 4 까지 보냈다고 한다면 ack 번호를 5번으로 답장보냄

(why? 5번까지 잘 받았어 6번부터 보내줘~)

시컨스 넘버 5, 6, 7, 8, 9, 10, 11까지 보냄 ack 번호를 12번으로 답장보냄 

단, 전송량을 점차 늘려가며 보내게 됨

만약 중간에 하나가 비었으면 ack 안줌 그러면 반대에서 다시 재전송을 보냄

다 제대로 받았을 경우만ack를 줌

A B

1, 2, 3, 4 ->

<- ack5

5, 6, 7, 8, 9, 10, 11 ->

<- ack12

12, 13, 14, 15, 16, 17, ....n ->

<- ack n+1


95, 96, 97을 분석해보면 tcp는 슬라이딩 윈도우 기법을 사용한다는 것을 알 수 있다.

*/


 - 혼잡 제어 기능 : 혼잡 발생시 전송률을 최소화하는 기능


 - 오류 검사 : 수신한 세그먼트 손상 여부 판단

        (손상된 세그먼트는 드랍 처리 실시)


 - 재전송 기능 : 송신한 세그먼트에 대한 Ack를 수신하지 못하면, 해당 세그먼트를 재전송 실시


 - Window Size : 송수신할 수 있는 세그먼트양 (낮은 쪽에 협의를 하면서 보낸다.)


 - checksum : 오류 검사 (손상되었는지 확인함)

 

 - HTTP(80), HTTPs(443), Telnet(23), SSH(22), FTP(21), FTP-Data(20), SMTP(25), POP3(110)


 - TCP를 사용하는 서비스 공통점 : 


지속적인 관계에서 서비스가 필요한 경우 대부분이 TCP다 (무조건은 아님=예외 있음)

서비스 무결성 및 신뢰성이 요구되는 경우

재전송 기능이 필요한 경우






2. UDP(User Datagram Protocol)


 - Layer 4 계층 프로토콜

 - 비연결 지향성 프로토콜 (TCP랑 비교하자면 상대방과 연결을 안함)


'3-Way 핸드 쉐이킹' 동작 실시  X

데이터 스트림 서비스    X

혼잡 제어 기능            X

재전송 기능                    X

Window Size            X


 - 오류 검사

 - DNS(53), TFTP(69), DHCP Server(67), DHCP Client(68), SNMP(161), NTP(123)


 - UDP를 사용하는 서비스 공통점 :


요청 & 응답만 필요한 경우

실시간 트래픽 전송 (ex : 음성)

멀티케스트, 브로드케스트


ex) www.naver.com DNS 서버

연결 없이 바로 요청, 응답임

dns 검색 55번 udp 확인  --> 별로 특징이 없죠 (소스 포트만 확인됨)

주로 음성 전송할 때 주로 쓴다고 생각하면 됨






3. IP(Internet Protocol)


 - Layer 3 계층 프로토콜

 - 비연결 지향성 프로토콜

 - 로컬 환경에서 리모트 환경으로 데이터 전송 담당 (다른 환경에서 리모트 환경으로 데이터 전송 담당!!!)

 - TTL(Time to Live) : 8bit(0~255), 거리 측정 및 패켓 루프 방지 기능

   TTL은 ip 헤더 안에만 있어요 요것도 쫌 알아 두세요~


time to live (TTL)

ex) 거리측정

윈도우---------------R1---------------R2----------------R3---------------R4---------------리눅스

TTL=128       TTL=127            TTL=126             TTL=125                  TTL=124                            ----->

<-----               TTL=60              TTL=61              TTL=62                   TTL=63                      TTL=64


ex) 패켓 루프 방지 기능

루프에 빠졌을 때 = 즉, 한 구간에 계속 왔다갔다 할 때, 과부화가 걸리는데 TTL 이 0이 되면 꺼진다.



[참고] 운영 체제 TTL 기본값


 - Cisco 255

 - Window 128

 - Linux 64






4. ICMP(Internet Control Message Protocol)


 - IP 프로토콜을 이용한 데이터 전송 여부 가능 테스트 프로토콜

 - 'ping', 'tracert' 명령어


'Ping'

A                     B

192.168.14.14             192.168.14.11


ping 192.168.14.11


ICMP Echo-Request -> <- ICMP Echo-Reply

SA 192.168.14.14 SA 192.168.14.11

DA 192.168.14.11        DA 192.168.14.14


결과물

Ping www.google.com [74.125.23.106] 32바이트 데이터 사용:

74.125.23.106의 응답: 바이트=32 시간=88ms   TTL=40

74.125.23.106의 응답: 바이트=32 시간=105ms TTL=40

74.125.23.106의 응답: 바이트=32 시간=93ms   TTL=40

74.125.23.106의 응답: 바이트=32 시간=84ms   TTL=40


icmp 검색 1359 번 

타입 8번하고 0번만 알아 두면 될꺼 같아요

(차이점 tcp/udp는 포트가 있다면 icmp는 타입이 있음)


www.naver.com 에서는 ping 요청이 만료됨

즉 네이버는 방화벽에서 icmp를 드랍(차단)하고 있다고 보면 됨

icmp 공격 당하지 않기 위해 설정해 놓은 거임


그러니 ping 이 안보내 진다고 연결이 안됐다 생각하는 건 아니구

방화벽도 생각해 봐야 함 




'tracert'

 - TTL을 1로 해서 내보냄

 - TTL을 2로 해서 보냄

 - 특징 : 경로를 알 수 있음 (IP 주소도 알 수 있음)


ftp에서 다운받았던 폴더에서 

VRC(traceroute) 설치 

간혹 자바가 설치 안되었을 때는 자바 설치후 실행 할 수 있음

(무료 15일 버젼이므로 집에서는 다운 받지 말 것)






5. ARP(Address Resolution Protocol)


 - 주소 변환 프로토콜

 - 목적지 IP 주소에 대한 MAC 주소를 설정하는 프로토콜

 - 만약, 목적지 IP 주소에 대한 MAC 주소가 없을 경우, 다음과 같이 ARP 요청 및 응답 실시


A            B

192.168.14.11        192.168.14.14

90-9F-33-EB-34-98    90-9f-33-eb-36-ff


ARP Reqeust(192.168.14.14, MAC ?) -> 

SA 90-9F-33-EB-34-98

DA FF-FF-FF-FF-FF-FF

           <- ARP Response(192.168.14.14

               MAC 90-9f-33-eb-36-ff)

               SA 90-9f-33-eb-36-ff

               DA 90-9F-33-EB-34-98

#ARP Table#

192.168.14.14 90-9f-33-eb-36-ff


A -> B

SA 192.168.14.11

DA 192.168.14.14

-------------------------- IP

SA 90-9F-33-EB-34-98

DA 90-9f-33-eb-36-ff

-------------------------- ETH


C:\Users\Administrator>arp -d

C:\Users\Administrator>arp -a

ARP 항목을 찾을 수 없습니다.


C:\Users\Administrator>arp -a

인터페이스: 192.168.14.11 --- 0xd

  인터넷 주소           물리적 주소               유형

  192.168.14.1           50-6a-03-af-29-3c     동적

  192.168.14.255       ff-ff-ff-ff-ff-ff     정적

  224.0.0.252               01-00-5e-00-00-fc     정적




ex)@ARP 동작 과정

A PC > arp -a 아무 내용도 안뜸

C PC > arp -a 아무 내용도 안뜸


1번째 유니캐스트 보류 됨 (목적지를 모르기 때문에)  = 목적지에 대한 Mac address를 모르면 보류가 됨

A -> C

SA 13.13.10.1

DA 13.13.10.3

---------------------------- IP

SA 00d0.584c.1278

DA



A PC > ping 13.13.10.3

A -> ARP 요청

"13.13.10.3,  MAC ..."

---------------------------- ARP 요청 메세지

SA 00d0.584c.1278

DA FFFF.FFFF.FFFF

---------------------------- ETH


캐스트 설정은? 브로드캐스트밖에 못함 why? 목적지 맥어드레스를 모르기 때문에

48bit 가 다 1이면 브로드캐스트임 16진수로 표현하면 FFFF.FFFF.FFFF (브로드캐스트 주소)

ICMP 는 ping할 때의 명령어죠! 다 뿌리는 것 (=플러딩)


C PC > arp -a

정보가 나옴 (why? 누가 보냈는지 아니까) 받은 즉시 arp 에 mac address를 저장함

유니캐스트로 보냄


ARP 응답 <- C

"13.13.10.3,  MAC 0010.115c.81e2"

---------------------------- ARP 응답 메세지

SA  0010.115c.81e2

DA 00d0.584c.1278

---------------------------- ETH



A PC > arp -a 정보 나옴

좀 전의 요청 응답은 arp mac address 주소를 알아오는 과정이고

 0010.115c.81e2  

arp 는 알아온 주소를 셋팅하는 과정을 말한다 (주소 변경해 놓음)



A -> C

SA 13.13.10.1

DA 13.13.10.3

----------------------------IP

SA 00d0.584c.1278

DA 0010.115c.81e2

---------------------------- ETH



명령어

arp             (arp의 옵션들을 볼 수 있음)

arp -d     (arp 테이블 삭제)

arp -a         (arp 테이블 확인)

arp -s         (정적으로 설정: 직접 셋팅)


Ex) 헤더

L2    L3    L4

ETH | IP | TCP | HTTP

ETH | IP | UDP | DNS


ETH | IP | ICMP Echo

ETH | IP | ICMP Echo-Reply

ETH | ARP Request

ETH | ARP Response


TCP 데이터 단위 : 세그먼트

UDP 데이터 단위 : 데이터그램

IP 데이터 단위 : 패킷

ETH 데이터 단위 : 프레임



ex)

A 컴퓨터 > arp -a 정보없음

ping 13.13.10.3 ping 보내기 전 arp 요청한 후 ping 보냄   * (arp 요청은 브로드캐스트임!)*

arp -a 13.13.10.3에 대한 정보가 나옴

ping 13.13.10.2

arp -a 13.13.10.2에 대한 정보가 나옴 (이때, arp요청을 또 할까요? 놉 이미 알고 있으니 요청 안함)

arp -d         arp 테이블 삭제됨

arp -a 확인



*라우터는 브로드 캐스트에 대한 요청은 응답 안함!*

즉, 다른 pc에 대한 mac address는 세팅 못한다.

그래서 라우터 못하고 게이트 웨이를 ethernet에 설정하는 것임!




arp에 대한 공격이 있음 (오 신기신기)

arp 스푸핑 공격! (변경을 하면 머라고 했죠? 스푸핑 공격!)


라우터도 ethernet이 있기 때문에

mac address에 대한 정보를 가지고 있음


X-(F0/0)-----------------------F(0/1)-SW1-(F0/3)--------------------B (공격자)

1.234                               F(0/2)                     1.200

000A                                |                     0002

                                       |

                                       |

                                   A (타겟)

1.100

0001


원래 arp      x의 arp 1.100-0001

a의 arp 1.253-000A

그러나 공격자가 x(라우터)와 a한테 arp 응답을 계속 보냄

mac address가 0002 이라고 그러면 그 두개가  arp  갱신하게 됨


변경후 arp     x의 arp 1.100-0002

    a의 arp 1.253-0002

그러므로 A가 뭘 하든 공격자가 다 알게 됨 A의 요청도 받고 답변도 다 받음

왜냐하면 요청을 보내도 저장된 맥어드레스 주소로 데이터가 가기 때문에 전부 B PC를 거치게 됨


방어하는 방법

1. arp -s 명령어 입력해서  static 하게 게이트웨이를 등록

2. arp 검사하는 기능이 있음 변조 된거다 하면 드랍하는 스위치가 있음 그걸 사용



==============================================================================



OSI 7계층 중에 우리는 주로 1,2,3,4 계층 까지 주로 나감 (CCNA 진도)


데이터 단위

(Transport)

Layer 4계층                     TCP         UDP 세그먼트

연결성     비연결성(신속성)

(Network)

Layer 3계층                             IP         패캣 ICMP, ARP (어시스트해주는 프로트콜이다 라고만 알면 됨)


(Data-Link)

Layer 2계층                         Ethernet 프레임


(Physical)

Layer 1계층 프로토콜 X, 데이터 단위 X, 그냥 전기적인 신호임 (0, 1로 표현한다)



파일 크기가 10G가 되는데 이것을 다운로드 하겠답니다.

그러면 FTP(TCP) 나 TFTP(UDP) 중 어떤것을 선택하겠습니까?

FTP!! why? 파일 크기가 크기 때문에 오랫동안 연결되어야 하므로




TIP

브로드캐스터를 공유하면 = 같은 네트워크

브로드캐스터를 공유하지 않으면 = 다른 네트워크


라우터에 데이터를 넘기고 싶다면

브로드캐스터 말고 유니캐스트로 변경해서 보내야 함



==============================================================================



4일차 공부 예습!


2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1


1 1 1 1 1 1 1 1 =255


2^8-1 = 255



이거 공부하기!


==============================================================================







반응형

블로그의 정보

jennysgap

jennysgap

활동하기