socket bind
소켓에 인터페이스를 바인딩 할때
sd = socket(AF_INET, SOCK_STREAM, 0); // server socket
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr( argv[1] );
serv_addr.sin_port=htons( atoi( argv[0] ) );
if(bind(sd, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) == -1){
fprintf(stderr, "bind error.\n");
exit(-1);
}
이런 코드에서
bind 할때 일어나는 자세한 일에 대해서 알고싶어요
socket 의 종류에 따라 다르다고 알지만 위처럼 평범한 TCP 소켓을 만들고났을때
포트번호랑 IP 주소를 소켓에 바인딩 할텐데
실험삼아 해봤는데 인터페이스가 down 인 상태에서도 바인딩이 되더라고요;
아무런 IP 나 줘봤는데; 포트번호도 2222222222 이런걸 줘도
바인딩이 되고;; 어찌된 일인지 bind 할때의 자세한 과정을
알고싶습니다~
그리고 인터페이스가 여러개인 경우에 특정 인터페이스에 소켓을 바인딩 하고 싶으면
해당 인터페이스의 IP 주소를 넘겨주면 되는게 맞나요?
그럼 127.0.0.1 과 바인딩을 했는데
인터페이스가 여러개 있다면 모드 인터페이스에서 오는 패킷을 다받아들이나요?
그리고 우분투 9.04에서...
네트워크 설정이 안되어있으면(네트워크 표시 그림부분에 X 되있으면)
파이어폭스가 무조건 동작을 안하는걸까요?
콘솔상에서 직접
ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
route add default gw 192.168.1.1
이렇게 해서 세팅해 준것과(게이트웨이 IP 가 192.168.1.1일때)
네트워크 설정하는부분을(GUI상으로) 마우스로 클릭해서
인터페이스 선택해서 네트워크가 설정되는거랑 다른가요?
이 두가지가 무슨 차이가 있나요??
비록 콘솔상에서 게이트웨이랑 서브넷마스크랑 IP 설정해놔도
GUI 인터페이스상에는 네트워크 연결 X 표시 되는 상태에서
파이어폭스가 아예 안되는거 같네요 ㅠㅠ
1. 바인딩은 인터페이스 업/다운과는 상관이
1. 바인딩은 인터페이스 업/다운과는 상관이 없습니다.
2. 포트를 저렇게까지 줘본적은 없어서.... ;;; 제 기억엔 port 를 체킹하는 루틴을 제가 직접 넣어줬던 것으로 기억합니다.
3. 해당 인터페이스의 IP 를 던져주면 됩니다.
4. loopback(127.0.0.1) 은 인터페이스가 1개입니다.
5. 파이어폭스는 잘..... GUI 는 사용을 안해서 ㄷㄷ;;;
실제로 GUI 에서 하나 CLI 에서 하나 차이는 없는 것으로 알고 있습니다.
댓글 달기