티스토리 뷰


TCP : 연결지향적
 데이터전송전>
     Browser와 Server 간의 연결을 성립하는 과정이 데이터를 전송하는 과정전에 이루어짐
     ex) 전화통화시 통화내용을 말하기 전에 상대편을 확인하는 작업과 동일

 통신선로를 만들기 위해서는 3번의 데이터 전송이 일어나는데
 이것을 three way handshake라고 함
 
 그림참조 ) three way handshake

 



 --> 정식데이터는 통신선로를 통해서 교환
 --> TCP : 연결 지향 프로토콜이라고 부름
 
 >> UDP 는 이러한 과정이 없이 단순히 데이터 전송
  -->Datagram protocol
 



>.TCP Header : 최소 20바이트 만족 - 최대 60바이트
  (가변적)


1) 출발지 포트(2byte)
2) 도착지 포트 (2byte)


* 중요
*3) Sequence Number(4byte)
*4) Acknouledge Number(4byte)


5) header length
*6) flag(6개 종류가 있다)

 (2byte)



0   0    0    0    0    0
                         FIN(연결을 해지할때 사용)
                      SYN (동기화 요청)
               RESET ( 세션을 초기화 )
             PSH(push --> 데이터를 전달할때 >>cash 를 해놓고 데이터 통신 )
     ACK(응답할때 사용)
URG( 긴급하게 전달할 데이터 )


7) window size (2byte) --> 실제 전송할 데이터의 크기
 - QoS
8) checksum (2byte)

9) dummy(2byte) -->더미를 넣어서 크기를 맞춰준다



[ #vi tcp.py ]




>> tcp 확인 



[ #vi sniffer.py ]




>> 3way handshake ( 프로토콜 ) 기법
        모든 tcp 통신
        (ex_전화를 거는 것 )



1_SIN flag 활성화

         flag : 000010


     > SYN flag 활성화 
     ISN (sq_num와 같음) : 초기 시퀀스 넘버

( 사용자를 식별하는 세션 번호 )


2_ 서버응답

          flag : 010010


    >SYN/ACK flag활성화
     ack -> client가 요청한 동기화 요청에 대한 응답 
     이때
     sq_num : 서버의 ISN 
     ACK 의 역할 : 내가보낸 동기화요청에대한 응답인지를 확인
      sq_num + : 규칙이있음 계속 변함
      자기가 보낸 data 크기만큼 +해서 변화


3_  ACK만 세팅

  flag : 010000 


 ACKNUM은 2의 시퀀스 넘버에 +1크기해서 돌려줌
 SQNUM 은 1의 시퀀스 넘버에 +1 크기해서 돌려줌


>>> SYN-->SYN

  ACK--> ACK 


1) 192.168.219.130서버에서 tcp_server.py 을 실행 

2) 192.168.219.115 하나는 sniffer.py 실행 

3) 192.168.219.115 # python3 tcp_client.py 192.168.219.115 10000 을 실행 





'Network Security > Network' 카테고리의 다른 글

L4) TCP 취약점  (0) 2018.01.17
L4) TCP 헤더 구축  (0) 2018.01.07
L4) UDP프로그래밍 / 공격기법  (0) 2018.01.03
checksum 계산  (0) 2017.12.31
IP 단편화 ( Fragment )  (0) 2017.12.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함