13 Security Lab

Connect() 소켓 함수의 sockaddr 구조체 IP, PORT 본문

Computer Security/Analysis

Connect() 소켓 함수의 sockaddr 구조체 IP, PORT

Maj0r Tom 2016. 2. 17. 12:25

우선 소켓에 대한 설명 아래



소켓 프로그래밍에서 클라이언트 또는 서버의 구체적인 주소를 표현하기 위해서는 주소 체계(address family), IP 주소, 포트 번호 세가지가 지정되어 있어야 하며 이 3가지 정보를 묶어서 소켓 주소(socket address)라고 부른다. 소켓 주소를 담을 구조체 sockaddr 은 다음과 같이 정의되어 있으며 이것은 2 바이트의 address family와 14 바이트의 주소(IP 주소 + 포트번호)로 구성되어 있다. 



Connect함수의 IP, Port 가 어떻게 처리 되는지 확인하기 위해 MSDN을 확인 하였다.



아래와 같이 두번째 파라미터에서 name이라는 포인터가 sockaddr 구조체 주소를 가리키고 있었다.


주석을 간단하고 명료하게 잘 달아 놓은 블로그가 있어 참조하였다. (http://proneer.tistory.com/)

아래 구조체는 서로 다른 OS(또는 플랫폼)에 있어 범용성있게 지원하기 위해 표준으로 지정해놓은 구조체이다.



실제 자주쓰이는 IPv4의 값을 보기위해서는 아래 구조체를 참고하면 되는데 하이라이트 부분이 PORT / IP 부분이다.







아래와 같이 sin_family는 0x02 로서 AF_INET (IPv4인터넷 프로토콜) 을 나타낸다.




아이피와 포트는 아래와 같이 확인 할 수 있다.


 

 멤버변수

 HEX(hexadecimal)

 Decimal

 IP

 sin_addr

 0xB7 0x6B 0xF8 0x97

 183.107.248.151

 PORT

 sin_port  

 0x1BB

 443


따라서 예제의 통신 대상은 183.107.248.151:443 이다.



(Ref. : http://proneer.tistory.com/entry/%EC%86%8C%EC%BC%93-%EC%A3%BC%EC%86%8C-%EA%B5%AC%EC%A1%B0%EC%B2%B4sockaddr)


Comments